Algorithm寺董。主要是為了編程訓(xùn)練和學(xué)習(xí)覆糟。每周至少做一個(gè) leetcode 的算法題(先從Easy開始,然后再M(fèi)edium遮咖,最后才Hard)滩字。進(jìn)行編程訓(xùn)練,如果不訓(xùn)練你看再多的算法書御吞,你依然不會(huì)做算法題麦箍,看完書后,你需要訓(xùn)練魄藕。關(guān)于做Leetcode的的優(yōu)勢(shì)内列,你可以看一下我在coolshell上的文章 Leetcode 編程訓(xùn)練 - 酷 殼 - CoolShell。
Review:主要是為了學(xué)習(xí)英文背率,如果你的英文不行,你基本上無緣技術(shù)高手嫩与。所以寝姿,需要你閱讀并點(diǎn)評(píng)至少一篇英文技術(shù)文章,我個(gè)人最喜歡去的地方是http://Medium.com(需要梯子)以及各個(gè)公司的技術(shù)blog划滋,如Netflix的饵筑。
Tip:主要是為了總結(jié)和歸納你在是常工作中所遇到的知識(shí)點(diǎn)。學(xué)習(xí)至少一個(gè)技術(shù)技巧处坪。你在工作中遇到的問題根资,踩過的坑,學(xué)習(xí)的點(diǎn)滴知識(shí)同窘。
Share:主要是為了建立你的影響力玄帕,能夠輸出價(jià)值觀。分享一篇有觀點(diǎn)和思考的技術(shù)文章想邦。
Algorithm
給定一個(gè)整數(shù)數(shù)組
nums
和一個(gè)目標(biāo)值target
裤纹,請(qǐng)你在該數(shù)組中找出和為目標(biāo)值的那 兩個(gè) 整數(shù),并返回他們的數(shù)組下標(biāo)丧没。你可以假設(shè)每種輸入只會(huì)對(duì)應(yīng)一個(gè)答案鹰椒。但是锡移,你不能重復(fù)利用這個(gè)數(shù)組中同樣的元素。
示例:
給定 nums = [2, 7, 11, 15], target = 9 因?yàn)?nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
new_nums = [target - i for i in nums]
for i,num in enumerate(new_nums):
for j,_num in enumerate(nums):
if num == _num and i != j:
return [i,j]
邏輯上沒有問題漆际,但是看樣子運(yùn)算時(shí)間太長(zhǎng)了淆珊。
第一題就翻車了,只能先看答案學(xué)習(xí)了奸汇,之后要加強(qiáng)算法相關(guān)知識(shí)的學(xué)習(xí)了施符。
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
hashmap = {}
for index,num in enumerate(nums):
another_num = target - num
if another_num in hashmap:
return [hashmap[another_num],index]
hashmap[num] = index
發(fā)現(xiàn)這個(gè)答案執(zhí)行簡(jiǎn)單的時(shí)間要84ms反而比我那個(gè)長(zhǎng),但是數(shù)量多起來茫蛹,反而變得很快了操刀。
列表操作時(shí)間復(fù)雜度
字典操作時(shí)間復(fù)雜度
似乎在《流暢的Python》中看到字典的讀取復(fù)雜度遠(yuǎn)比列表的低,所以可能正是由于這個(gè)原因婴洼,所以可以更快的計(jì)算出來吧骨坑。看來以后對(duì)性能要求高的時(shí)候要多用字典少用列表了柬采。
Review
A Beginner-Friendly Introduction to Containers, VMs and Docker
The one big difference between containers and VMs is that containers share the host system’s kernel with other containers.
Docker is an open-source project based on Linux containers. It uses Linux Kernel features like namespaces and control groups to create containers on top of an operating system.
Docker發(fā)展迅速的原因:
-
Ease of use
- build once, run anywhere.
- Speed
-
Docker Hub
- app store for Docker images.
-
Modularity and Scalability
- link containers together to create your application
Docker基礎(chǔ)
-
Docker Engine
-
Docker Client
-
Docker Daemon
-
Dockerfile
- RUN apt-get y install some-package: to install a software package
- EXPOSE 8000: to expose a port
- ENV ANT_HOME /usr/local/apache-ant to pass an environment variable
-
Docker Image
-
Union File Systems
看完一篇英文文檔真的是很痛苦欢唾。而且由于一直在翻譯,所以感覺看一點(diǎn)忘了一點(diǎn)粉捻。
Tip
最近搭建了Gitlab服務(wù)器進(jìn)行代碼管理礁遣。
由于設(shè)備是Windows7,一開始使用的是Docker搭建的肩刃,但是Win7的Docker安裝在一個(gè)虛擬機(jī)里面祟霍,發(fā)現(xiàn)每次一重啟電腦,Docker中的gitlab中的數(shù)據(jù)就丟失了盈包!雖然可以正常啟動(dòng)起來沸呐,但是數(shù)據(jù)丟失了,想使用-v
進(jìn)行數(shù)據(jù)持久化也沒有用呢燥。所以最終的解決辦法就是搭了一個(gè)虛擬機(jī)崭添,在虛擬機(jī)上逐步的安裝了一個(gè)Gitlab服務(wù)器。
Share
引入Gitlab叛氨,希望通過Code Review呼渣,團(tuán)隊(duì)一起提升代碼質(zhì)量。