原创 一文解決LeetCode島嶼問題

島嶼問題一 題目鏈接 463. 島嶼的周長 題目描述 解題思路 求島嶼的周長其實有很多種方法,如果用 DFS 遍歷來求的話,有一種很簡單的思路:島嶼的周長就是島嶼方格和非島嶼方格相鄰的邊的數量。注意,這裏的非島嶼方格,既包括水域方格,也包

原创 【Leetcode】129. 求根到葉子節點數字之和

題目鏈接 https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/ 題目描述 解題思路 1.先序遍歷(DFS) 2.層序遍歷(DFS) AC代碼 DFS解法一 /** * De

原创 【Leetcode】530.二叉搜索樹的最小絕對差

題目鏈接 530. 二叉搜索樹的最小絕對差 題目描述 解題思路 1.利用中序遍歷把樹轉爲有序數組,然後在數組上求兩個相鄰數字的最小值。 2.同樣採用中序遍歷,可以直接在遞歸遍歷的過程中記錄相鄰數字的最小值。 3.因爲題目給的樹是二叉排序樹

原创 團滅二數之和、三數之和、四數之和

1.兩數之和 題目鏈接 Leetcode1 兩數之和 題目描述 解題思路 1.暴力法 雙重for循環,時間複雜度O(n*n) 2.排序+雙指針 3.哈希表 AC代碼 //利用哈希表,一步到位,時間複雜度O(n) class Solutio

原创 【LeetCode】50. Pow(x, n)(位運算、快速冪)

題目鏈接 劍指 Offer 16. 數值的整數次方 題目描述 解題思路 冪次方的計算:常規方法就是寫個for循環,但是在本題會超時,所以不可取。 本題就要考察就是快速冪以及位運算的相關知識。 注意事項: 有符號位移和無符號位移 有符號、

原创 【LeetCode】79. 單詞搜索(回溯的另一種框架)

題目鏈接 79. 單詞搜索 題目描述 解題思路 又是一題經典的回溯法,但是本題回溯法的框架和之前的回溯題目不一樣,可以進行對比分析。 AC代碼 class Solution { int dir[][] = {{0,1},{0,-

原创 【LeetCode】216. 組合總和 III(回溯)

題目鏈接 216. 組合總和 III 題目描述 找出所有相加之和爲 n 的 k 個數的組合。組合中只允許含有 1 - 9 的正整數,並且每種組合中不存在重複的數字。 示例 1: 輸入: k = 3, n = 7 輸出: [[1,2,4]]

原创 【LeetCode】60.第k個排列(回溯(階乘數組剪枝))

題目鏈接 60. 第k個排列 題目描述 解題思路 1.普普通通回溯法 直接看代碼即可。 2.回溯+減枝 參考大哥 使用該方法相當於在一大堆答案中,直接找到唯一的可行,所以是不需要回溯的 基於以下幾點考慮: 所求排列 一定在葉子結點處得到

原创 【LeetCode】257. 二叉樹的所有路徑(DFS(對回溯的一些理解))

題目鏈接 257. 二叉樹的所有路徑 題目描述 解題思路 最直觀的方法是使用深度優先搜索。在深度優先搜索遍歷二叉樹時,我們需要考慮當前的節點以及它的孩子節點。 如果當前節點不是葉子節點,則在當前的路徑末尾添加該節點,並繼續遞歸遍歷該節點

原创 【LeetCode】51.N皇后(回溯)

題目鏈接 51. N 皇后 題目描述 解題思路 1.經典回溯 普通八皇后問題只需要求出有多少種可行方案即可,而本題稍微更難一點,還需要把這些可行方案記錄並打印。 之前也說到遇到遞歸問題,兩件分析法寶:畫出遞歸樹以及函數棧!本題遞歸樹如下:

原创 【LeetCode】486.預測贏家(遞歸、DP)

題目鏈接 486. 預測贏家 同一類型的題目:877. 石子游戲 題目描述 給定一個表示分數的非負整數數組。 玩家 1 從數組任意一端拿取一個分數,隨後玩家 2 繼續從剩餘數組任意一端拿取分數,然後玩家 1 拿,…… 。每次一個玩家只能拿取

原创 【LeetCode】841.房間和鑰匙(DFSBFS)

題目鏈接 841. 鑰匙和房間 題目描述 有 N 個房間,開始時你位於 0 號房間。每個房間有不同的號碼:0,1,2,...,N-1,並且房間裏可能有一些鑰匙能使你進入下一個房間。 在形式上,對於每個房間 i 都有一個鑰匙列表 rooms[

原创 【LeetCode】214. 最短迴文串

題目鏈接 214. 最短迴文串 題目描述 給定一個字符串 s,你可以通過在字符串前面添加字符將其轉換爲迴文串。找到並返回可以用這種方式轉換的最短迴文串。 示例 1: 輸入: "aacecaaa" 輸出: "aaacecaaa" 示例 2

原创 【LeetCode】491.遞增子序列(回溯)

題目鏈接 491. 遞增子序列 題目描述 給定一個整型數組, 你的任務是找到所有該數組的遞增子序列,遞增子序列的長度至少是2。 示例: 輸入: [4, 6, 7, 7] 輸出: [[4, 6], [4, 7], [4, 6, 7], [4

原创 【LeetCode】17. 電話號碼的字母組合(回溯)

題目鏈接 17. 電話號碼的字母組合 題目描述 解題思路 又是一題經典的回溯,連續2天LC題目都是利用回溯進行解決。 與打印字符串全部子序列、Leetcode491遞增子序列不同的是,本題需要利用一個hashmap去記錄各個數字與字符