老師,寫遞迴函式的時候,是按照偽**一步一步翻譯成**麼?這樣就行了嗎?真的是不能細想,一想就會迷惑這程式為什麼要這樣寫[笑哭][笑哭]遞迴可以看成是一種新的思維方式,必須要盡量理解,以後學資料結構會大量使用的。
用「自然語言」實現**就是遞迴的魅力,習慣了這種程式設計方式就好了。
給定乙個二叉樹,找出其最小深度。
最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。
說明: 葉子節點是指沒有子節點的節點。
示例:給定二叉樹 [3,9,20,null,null,15,7],
3/ \
9 20
/ \
15 7
返回它的最小深度 2.
通過次數130,151提交次數293,819
class
solution
};
當出現[1,2]這種情況,就是說樹已經退化成煉表了,所以在求的時候需要判斷一下如果左子樹深度為0,那最小深度就是鍊錶長度,即右子樹深度,反之也可。
給定乙個二叉樹,找出其最大深度。
二叉樹的深度為根節點到最遠葉子節點的最長路徑上的節點數。
說明: 葉子節點是指沒有子節點的節點。
示例:給定二叉樹 [3,9,20,null,null,15,7],
3/ \
9 20
/ \
15 7
返回它的最大深度 3 。
通過次數265,446提交次數354,273
class
solution
};
給定乙個鍊錶,兩兩交換其中相鄰的節點,並返回交換後的鍊錶。
你不能只是單純的改變節點內部的值,而是需要實際的進行節點交換。
示例:給定 1->2->3->4, 你應該返回 2->1->4->3.
通過次數143,629提交次數215,693
class
solution
};
翻轉一棵二叉樹。
示例:輸入:
4/ \
2 7
/ \ / \
1 3 6 9
輸出: 4
/ \
7 2
/ \ / \
9 6 3 1
備註:這個問題是受到 max howell 的 原問題 啟發的 :
谷歌:我們90%的工程師使用您編寫的軟體(homebrew),但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。
class
solution
};
100. 相同的樹
給定兩個二叉樹,編寫乙個函式來檢驗它們是否相同。
如果兩個樹在結構上相同,並且節點具有相同的值,則認為它們是相同的。
示例 1:
輸入: 1 1
/ \ / \
2 3 2 3
[1,2,3], [1,2,3]
輸出: true
示例 2:
輸入: 1 1
/ \
2 2
[1,2], [1,null,2]
輸出: false
示例 3:
輸入: 1 1
/ \ / \
2 1 1 2
[1,2,1], [1,1,2]
輸出: false
通過次數136,858提交次數227,657
class
solution
};
劍指 offer 10- i. 斐波那契數列
寫乙個函式,輸入 n ,求斐波那契(fibonacci)數列的第 n 項。斐波那契數列的定義如下:
f(0)
= 0, f(1)
= 1f(n)
= f(n - 1) + f(n - 2), 其中 n > 1.
斐波那契數列由 0 和 1 開始,之後的斐波那契數就是由之前的兩數相加而得出。
答案需要取模 1e9+7(1000000007),如計算初始結果為:1000000008,請返回 1。
示例 1:
輸入:n = 2
輸出:1
示例 2:
輸入:n = 5
輸出:5
0 <= n <= 100
class
solution
return dp[n];}
};
101. 對稱二叉樹
給定乙個二叉樹,檢查它是否是映象對稱的。
例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。
1/ \
2 2
/ \ / \
3 4 4 3
但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:
1/ \
2 2
\ \
3 3
高階:你可以運用遞迴和迭代兩種方法解決這個問題嗎?
遞迴
class
solution
//迭代
bool
isequal2
(treenode* p,treenode* q)
return
true;}
bool
issymmetric
(treenode* root)
};
陣列 二分法一看就會,一寫就廢
35.搜尋插入位置 思路 陣列有序,且不含重複元素,這就是使用二分查詢的重要前提,因為一旦有重複元素,使用二分查詢返回的元素下標並不是唯一的。二分查詢涉及的很多的邊界條件,是 while left right 還是 while left right 到底是right middle呢,還是要right...
正則基礎(一看就會)
正則 1.什麼是正則 正規表示式 規則表示式 regular expression 正則其實就是描述了一套規則,本質是操作字串。2.正則是幹什麼的?操作字串的 1 模式匹配 表單驗證 2 文字檢索 3 替換3.正則的好處 為什麼用它 簡單,方便 效能極高4.字串方法都有哪些 substring 開始...
紅黑樹 一看就會
red black tree是自平衡 非絕對平衡 的二叉查詢樹 先嘗試recolor,置色紅黑 再嘗試rotation 旋轉 插入新節點,標紅,如果為根節點,則標黑 如果不是根節點,且其parent是紅,uncle是紅 插入新節點,標紅,如果為根節點,則標黑 如果不是根節點,且其parent是紅,u...