leetcode 一看就會一寫就廢的遞迴解題合集

2021-10-24 02:47:21 字數 3049 閱讀 5459

老師,寫遞迴函式的時候,是按照偽**一步一步翻譯成**麼?這樣就行了嗎?真的是不能細想,一想就會迷惑這程式為什麼要這樣寫[笑哭][笑哭]

遞迴可以看成是一種新的思維方式,必須要盡量理解,以後學資料結構會大量使用的。

用「自然語言」實現**就是遞迴的魅力,習慣了這種程式設計方式就好了。

給定乙個二叉樹,找出其最小深度。

最小深度是從根節點到最近葉子節點的最短路徑上的節點數量。

說明: 葉子節點是指沒有子節點的節點。

示例:給定二叉樹 [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...