日常演算法題(三)

2021-08-30 21:39:55 字數 2394 閱讀 6073

1.對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。

例如,二叉樹 [1,2,2,3,4,4,3] 是對稱的。 但是下面這個 [1,2,2,null,3,null,3] 則不是映象對稱的:

想法:直接遞迴遍歷判斷是否相等即可

**:

public boolean issymmetric(treenode root) 

public boolean ismirror(treenode t1, treenode t2)

2.二叉樹的深層遍歷

給定乙個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。

例如: 給定二叉樹: [3,9,20,null,null,15,7], 返回其層次遍歷結果: [ [3], [9,20],

[15,7] ]

想法:用dfs遍歷即可

**:

public void levelhelper(list> res, treenode root, int height) 

res.get(height).add(root.val);

levelhelper(res, root.left, height+1);

levelhelper(res, root.right, height+1);

}

3.求根到葉子節點子數之和

給定乙個二叉樹,它的每個結點都存放乙個 0-9 的數字,每條從根到葉子節點的路徑都代表乙個數字。

例如,從根到葉子節點路徑 1->2->3 代表數字 123。

計算從根到葉子節點生成的所有數字之和。

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

示例 1:

輸入: [1,2,3]

1 / \ 2 3 輸出: 25 解釋: 從根到葉子節點路徑 1->2 代表數字 12. 從根到葉子節點路徑 1->3 代表數字 13. 因此,數字總和 = 12 + 13 = 25. 示例 2:

輸入: [4,9,0,5,1]

4 / \ 9 0 / \ 5 1 輸出: 1026 解釋: 從根到葉子節點路徑 4->9->5 代表數字 495. 從根到葉子節點路徑 4->9->1 代表數字 491. 從根到葉子節點路徑 4->0 代表數字 40. 因此,數字總和 = 495 + 491 + 40 = 1026.

想法:依舊是先根據題意依次遍歷並設定返回路徑的演算法

**:

public int sumnumbers(treenode root) 

public int sum(treenode n, int s)

4.刪除鍊錶中的節點

請編寫乙個函式,使其可以刪除某個鍊錶中給定的(非末尾)節點,你將只被給定要求被刪除的節點。

現有乙個鍊錶 – head = [4,5,1,9],它可以表示為:

4 -> 5 -> 1 -> 9
示例 1:

輸入: head = [4,5,1,9], node = 5 輸出: [4,1,9] 解釋: 給定你鍊錶中值為 5

的第二個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 1 -> 9. 示例 2:

輸入: head = [4,5,1,9], node = 1 輸出: [4,5,9] 解釋: 給定你鍊錶中值為 1

的第三個節點,那麼在呼叫了你的函式之後,該鍊錶應變為 4 -> 5 -> 9. 說明:

鍊錶至少包含兩個節點。 鍊錶中所有節點的值都是唯一的。 給定的節點為非末尾節點並且一定是鍊錶中的乙個有效節點。

不要從你的函式中返回任何結果。

想法:依舊是用鍊錶刪除方法,不過只是要求多了些而已

**:

public class solution 

}}

5.區域檢索-陣列不可變

給定乙個整數陣列 nums,求出陣列從索引 i 到 j (i ≤ j) 範圍內元素的總和,包含 i, j 兩點。

示例:給定 nums = [-2, 0, 3, -5, 2, -1],求和函式為 sumrange()

sumrange(0, 2) -> 1 sumrange(2, 5) -> -1 sumrange(0, 5) -> -3 說明:

你可以假設陣列不可變。 會多次呼叫 sumrange 方法。

想法:簡單題,從i到j索引並返回總和值即可

**:

public class numarray 

public int sumrange(int i, int j)

日常演算法題分享

牛牛發現西洋棋的棋盤圖案特別好看,是黑白相間的。眾所周知,西洋棋的棋盤是88大小的,不過他現在想讓你列印出乙個nn n為偶數 的西洋棋棋盤。我們用字元 1 表示黑格,0 表示白格。棋盤左上角的格仔為白格,規定與白格相鄰的格仔全部為黑格,與黑格相鄰的格仔全部為白格。輸入描述 僅一行乙個正整數n 2 l...

演算法題C (三)

本部落格目錄 給定乙個單向鍊錶的頭節點head,節點的值型別是整型,再給定乙個整數p。實現乙個調整鍊錶的函式,將鍊錶調整為左部分都是值小於 p的節點,中間部分都是值等於p的節點,右部分都是值大於 p的節點。空間複雜度為o n 的演算法 建立輔助陣列,先在陣列上排序,之後連線 空間複雜度o n lis...

演算法題摘錄三

1 判斷給定陣列是不是二叉搜尋樹的前 後序遍歷序列 二叉搜尋樹的特點是 左子樹的值 根結點值 右子樹的值。而前 後序遍歷序列的首 尾數是根結點,依據根結點可以把陣列其餘部分劃分為左子樹 右子樹,然後根據左右子樹序列又可以遞迴地確定父結點並劃分子樹.如果能遞迴遍歷完整個陣列則說明合法,否則非法。下面是...