原创 LeetCode 222. 完全二叉樹的節點個數 (遍歷+打編號)

完全二叉樹的節點個數 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; *

原创 LeetCode 904. 水果成籃 (雙指針 || 滑動窗口)

水果成籃 class Solution { public: int totalFruit(vector<int>& a) { int ans = 1 , n = a.size(); int

原创 LeetCode 95. 不同的二叉搜索樹 II (記憶化遞歸)

不同的二叉搜索樹 II 思路: 對於一個序列,l,l+1,l+2……,r−2,r−1,rl,l+1,l+2……,r-2,r-1,rl,l+1,l+2……,r−2,r−1,r, 枚舉每個值作爲根節點, 然後它左邊的數字構建左子樹、右

原创 LeetCode 1110. 刪點成林 (二叉樹節點的刪除)

刪點成林 一個節點要被加入答案,情況應該是它的父親節點要被刪除了,而它自己不會被刪除,這個時候纔可以去添加到答案,並且要注意被刪除節點的更新。 /** * Definition for a binary tree node.

原创 LeetCode 面試題 17.26. 稀疏相似度 (關鍵就是“稀疏”)

稀疏相似度 最爲樸素的做法: 文檔之間一一匹配,然後用一個set<int>,記錄一下兩個文的並集,然後用原來的個數之和減去並集的個數即爲交集數。 時間複雜度: O(n2∗len)O(n^2*len)O(n2∗len) class

原创 LeetCode 1315. 祖父節點值爲偶數的節點和 (遍歷二叉樹)

祖父節點值爲偶數的節點和 由於需要知道祖父節點的值,所以搜索的時候要帶着祖父節點、父親節點、以及當前節點。 /** * Definition for a binary tree node. * struct TreeNode

原创 LeetCode 202. 快樂數 (set記錄、出現循環節中的數則失敗)

快樂數 class Solution { public: unordered_set<int> vis; bool isHappy(int n) { vis.insert(n);

原创 LeetCode 1026. 節點與其祖先之間的最大差值(三種時間複雜度)

雙重遞歸 時間複雜度:O(n2)O(n^2)O(n2) /** * Definition for a binary tree node. * struct TreeNode { * int val; * T

原创 LeetCode 1032. 字符流 (建樹的思路——“後綴”樹、後綴查詢)

字符流 此題主要是建立字典樹的思路有點難。 由於每次都要用到字符流的末尾,所以實際上是給定一個長字符串,判斷字典樹裏是否有單詞是它的後綴。 比如 字典樹{"bc","cd"},字符串"abc"的後綴bc字典裏出現。 如果是樸素想法

原创 LeetCode 26. 刪除排序數組中的重複項 (雙指針)

刪除排序數組中的重複項 選擇l,r爲雙指針,它們表示着一個區間的左右端點,再用一個idx表示要修改的位置。 class Solution { public: int removeDuplicates(vector<int

原创 LeetCode 404. 左葉子之和(二叉樹的遍歷)

左葉子之和 爲了知道一個節點是否是父節點的子節點,需在遍歷樹的時候記錄一下。 /** * Definition for a binary tree node. * struct TreeNode { * int va

原创 LeetCode 648. 單詞替換 (字典樹、字符串分割)

單詞替換 思路:將詞根單詞插入字符串、然後檢索每個單詞即可。 用vector<char>記錄下路徑上的字符,再用string(首迭代器,尾迭代器)即可。 手打分割字符串 class Solution { struct No

原创 LeetCode 1023. 駝峯式匹配 (模擬、字符串、雙指針)

按題目直接模擬就好,有點像雙指針 ,兩個字符串都只需遍歷一次就好。 時間複雜度: O(n∗(len1+len2))O(n*(len1+len2))O(n∗(len1+len2)) 爲什麼力扣標籤是字典樹呢 class Soluti

原创 LeetCode 125. 驗證迴文串 (首尾雙指針)

驗證迴文串 如何將string對象進行大小寫字母轉換。 template < class InputIterator, class OutputIterator, class UnaryOperator > OutputI

原创 LeetCode 1162. 地圖分析 (暴力循環+單源BFS、多源BFS、DP)

地圖分析 文章目錄暴力循環+BFS多個等價起始狀態的BFSDP 暴力循環+BFS 因爲要求每個0到1的最近距離,所以對於每個0進行BFS,搜到1時停止。然後挑出最大值即可。 這是最樸素的做法了。 循環 n^2次,每次(n ^2)