Algorithm做算法題滔金,Review點(diǎn)評(píng)英文文章色解,Tip總結(jié)技術(shù)技巧,Share做技術(shù)分享餐茵。每周打卡一次科阎,這就是ARTS打卡。
1. 做算法題
Leetcode55. 二叉樹的深度
題目:輸入一棵二叉樹的根節(jié)點(diǎn)忿族,求該樹的深度锣笨。從根節(jié)點(diǎn)到葉節(jié)點(diǎn)依次經(jīng)過的節(jié)點(diǎn)(含根、葉節(jié)點(diǎn))形成樹的一條路徑肠阱,最長路徑的長度為樹的深度票唆。
例如:
給定二叉樹 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 屹徘。
解題思路:這題用遞歸再適合不過了走趋,而遞歸算法不大符合常用思維方式。舉個(gè)例子以便于理解遞歸算法噪伊,而且便于代碼編寫簿煌。
電影院里黑漆漆的氮唯,你不知道自己正坐在第幾排,可以打開燈數(shù)一下姨伟,但會(huì)影響別人看電影惩琉。還有個(gè)辦法,問前面一排的人是坐在第幾排夺荒,然后加1就是自己的排數(shù)瞒渠。但前面那位老兄和你一樣也不知道自己第幾排,沒關(guān)系技扼,繼續(xù)向前問下去伍玖,直到第一排一定知道自己是第一排。前排反饋給后一排剿吻,后一排人加1再反饋給后排窍箍,以此類推,到了你的座位丽旅,就知道了自己的排數(shù)是前面一排加1椰棘。這就是遞歸算法。
解題代碼:
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
?
class Solution:
def maxDepth(self, root: TreeNode) -> int:
if root is None://如果節(jié)點(diǎn)本身為空榄笙,深度為0
return 0
if root.left is None and root.right is None:
return 1//如果左右節(jié)點(diǎn)都為空邪狞,深度為1,到了“第一排”
else:
return max(self.maxDepth(root.left), self.maxDepth(root.right))+1//取左右子樹的高度办斑,讓后加1就是本層的高度
2. 點(diǎn)評(píng)英文文章
文章What every developer should know about TCP簡單介紹了TCP協(xié)議如何三次握手外恕,如何控制流量擁塞。TCP協(xié)議不僅是計(jì)算機(jī)通信的規(guī)約乡翅,還能探測網(wǎng)絡(luò)的帶寬和延時(shí)情況鳞疲,并調(diào)節(jié)發(fā)送速度。
3. 技術(shù)技巧
很多人會(huì)買一本Linux基礎(chǔ)書作為工具書蠕蚜,遇到問題就去查工具書尚洽。其實(shí)Linux本身就自帶了很強(qiáng)大的幫助文件,man command
和 info command
都是對(duì)命令的詳細(xì)解釋靶累, command --help
是命令自帶的簡易幫助腺毫。雖然這些幫助文件是英文的,看起來有一點(diǎn)費(fèi)力挣柬,但英文解釋更容易理解和記憶命令潮酒。例如常用的刪除命令rm -rf
,但如何理解命令中每一個(gè)字母的含義呢邪蛔,rm
是remove刪除的意思急黎,-r
是recursive遞歸的意思,-f
是force強(qiáng)制的意思。
4. 技術(shù)分享
Linux中刪除文件時(shí)勃教,可能出現(xiàn)權(quán)限不足的報(bào)錯(cuò)淤击,習(xí)慣性地就用sudo命令提權(quán),再刪除文件故源。這容易誤解為用戶不具有該文件的寫權(quán)限污抬,所以不能刪除。實(shí)際上刪除文件不是依靠用戶具有該文件的寫權(quán)限绳军,而是用戶具有該文件所在目錄的寫權(quán)限印机。這都和Linux文件系統(tǒng)有關(guān),文件的元信息存儲(chǔ)在所在目錄中删铃。