原创 LeetCode 677. 鍵值映射 (暴力法、前綴樹)

鍵值映射 插入時間複雜度: O(K)O(K)O(K) 查找時間複雜度: O(K)O(K)O(K) 思路: 每個節點保存和,之後可以直接查詢。 另外尾結點值存儲鍵所對應的值。 struct Node{ lon

原创 LeetCode 1207. 獨一無二的出現次數 (STL庫 || 自己hash函數、數組映射)

獨一無二的出現次數 版本1: 優點:耗空間少、可拓展性強 缺點:時間開銷大一點 class Solution { public: unordered_map<int,int> m; unordered_set<i

原创 LeetCode 1306. 跳躍遊戲 III (水題、DFS)

跳躍遊戲 III class Solution { public: vector<int> vis; bool canReach(vector<int>& arr, int start) { vis

原创 LeetCode 236. 二叉樹的最近公共祖先(LCA、向上染色法)

二叉樹的最近公共祖先 求LCA的樸素做法:向上染色。 先讓一個節點不斷向上,並標記父節點。 然後讓另一個節點也向上尋找,然後第一次遇到的已經染色節點就是LCA。 具體做法: 先BFS求出每個節點的父節點。用unordered_ma

原创 LeetCode 508. 出現次數最多的子樹元素和 (遞歸求和、哈希表記錄)

出現次數最多的子樹元素和 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;

原创 LeetCode 144. 二叉樹的前序遍歷 (如何用迭代實現先序遍歷)

二叉樹的前序遍歷 class Solution { public: vector<int> ans; vector<int> preorderTraversal(TreeNode* root) {

原创 LeetCode 463. 島嶼的周長(看懂題意就好)

島嶼的周長 const int dx[] = {-1,0,1,0}; const int dy[] = {0,1,0,-1}; class Solution { public: int islandPerimeter(ve

原创 LeetCode 207. 課程表 (拓補排序入門例題)

課程表 題意: 那個有序的任務能否產生合法調度:有向圖是否存在環。 class Solution { public: bool canFinish(int numCourses, vector<vector<int>>&

原创 LeetCode 210. 課程表 II (入門題 拓撲排序)

課程表 II 和課程表題目幾乎一樣。 class Solution { public: vector<int> findOrder(int numCourses, vector<vector<int>>& prerequ

原创 LeetCode 429. N叉樹的層序遍歷 (多叉樹的存儲結構、隊列實現)

N叉樹的層序遍歷 注意: 一般一棵多叉樹的結構: 其中邊長數組便於存儲不定長的子節點。 class Node{ int val; vector<Node*> children; }; 而字典樹(Trie)的存儲結構一般爲

原创 LeetCode 124. 二叉樹中的最大路徑和 (樹形DP、遞歸實現)

二叉樹中的最大路徑和 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left;

原创 LeetCode 面試題 16.24. 數對和 (雙指針、哈希表)

數對和 雙指針: class Solution { public: vector<vector<int>> pairSums(vector<int>& nums, int target) { ve

原创 LeetCode 面試題 17.17. 多次搜索 (兩種做法建立前綴樹)

多次搜索 思路1: 將每個小字符串插入Trie 然後對大字符串的每個位置向後切割出字符串去匹配,用它去作前綴。 在搜索過程中,如果節點不存在,直接結束函數;對於每個節點,如果它是某個小字符串的結尾,插入答案。 時間複雜度:其中l

原创 LeetCode 802. 找到最終的安全狀態 (拓補排序、DFS)

找到最終的安全狀態 class Solution { public: vector<int> c,ans; vector<int> eventualSafeNodes(vector<vector<int>>& gr

原创 LeetCode 235. 二叉搜索樹的最近公共祖先 (利用二叉搜索樹的有序的性質、遞歸||迭代)

二叉搜索樹的最近公共祖先 BST的性質(定義): ①左子樹的節點的值都比根節點值小。 ②右子樹的節點的值都比根節點值大。 ③左子樹、右子樹都是BST。 所以, 假如p、q的值都比根節點的值要小,說明這個根節點還不是最近的,它的左子