原创 114. Flatten Binary Tree to Linked List

先序遍歷,用一個stack 來存儲節點。然後用一個dummyHead 來存儲頭結點。 class Solution { public:     void flatten(TreeNode* root) {          if(root

原创 105. 從前序與中序遍歷序列構造二叉樹

這道題按照下面的思路進行的。 直接複製思路: **C++**。首先要知道一個結論,前序/後序+中序序列可以唯一確定一棵二叉樹,所以自然而然可以用來建樹。 看一下前序和中序有什麼特點,前序1,2,4,7,3,5,6,8 ,中序4,7,2,1

原创 109. 有序鏈表轉換二叉搜索樹

找中點然後採用分治法。 class Solution { public:     TreeNode* sortedListToBST(ListNode* head) {         if(head == NULL) return NU

原创 120. 三角形最小路徑和

這個應該是一個典型的dp問題,用一個和輸入相同的二維數組進行到達此節點時的最小路徑。 注意兩個在每一行的邊界條件。以及row<=2時的處理,否則容易overflow. class Solution { public:     int mi

原创 86. 分隔鏈表

就是用兩個head 一個是大,一個是小,然後分別制定,一定要將Big->next = NULL; 否則會形成循環列表,超出時間限制。 class Solution { public:     ListNode* partition(Lis

原创 142. Linked List Cycle II

兩種解法,一種是通過hash將訪問過的存儲起來,當遇到環的時候,break; 另一種是快慢指針,floyd解法。 下面是hash_map解法: class Solution { public:     ListNode *detectCy

原创 138. 複製帶隨機指針的鏈表

就是用回溯法。用一個hash_map來存儲訪問過的節點。 class Solution { private:     unordered_map<Node*, Node*> all; public:     Node* copyRando

原创 143. Reorder List

這個題有幾種解法,一個是用vector 存儲,O(n)空間複雜度,一個是直接在鏈表上操作,O(1)空間複雜度,但是操作複雜,涉及到鏈表中點查找,revserse 以及鏈表的merge,這樣一個題就複習了三個解法。 下面是O(1)的解法。

原创 236. Lowest Common Ancestor of a Binary Tree

採用分治法來求解:  如果找到任意一個node 則返回,這樣就可以分爲三種情況。兩個node 在左右子樹都找到,返回root. class Solution { public:     TreeNode* lowestCommonAnce

原创 450. 刪除二叉搜索樹中的節點

主要是分三種情況,葉子節點,有左子樹,有右子樹。當時有個bug就是在尋找mode的時候是 root->left = deleteNode(root->left, key); 而不是  deleteNode(root->left, key)

原创 148. 排序鏈表

nlog 的算法,是歸併排序,同時是o1的空間複雜度,所以在merge的時候,直接在原鏈表上進行操作。在split的時候,由於包含head, 所以是走n-1步。 class Solution { public:     ListNode*

原创 162. 尋找峯值

因爲題目是log n的時間複雜度,所以很容易想到二分查找。主要是看區間選擇的條件。注意 left = mid + 1 ; 不能是mid,否則死循環。 class Solution { public:     int findPeakEle

原创 154. Find Minimum in Rotated Sorted Array II

和153的情況類似,主要是有相等重複的情況,需要將right-1 class Solution { public:     int findMin(vector<int>& nums) {         if(nums.size() =

原创 1046. Last Stone Weight

這裏就是用大頂堆。priority_queue  堆的定義:https://blog.csdn.net/lym940928/article/details/89635690 //構造一個空的優先隊列,此優先隊列是一個小頂堆 priorit

原创 200. 島嶼數量

參考標準解法,主要是用的DFS的解法。 這裏有個坑就是在更新i,j的時候,要用tmpi。 class Solution { private:     vector<int> x{-1, 1, 0, 0};     vector<int>