原创 leetcode41_缺失的第一個正數_數組技巧

1. 這題其實沒有想象中的那麼難,關鍵得利用數組的特性,我們得將不在正確位置的數放在對應的正確的位置上,然後再遍歷,得到不滿足條件的那個數,即爲缺失的那個數. 2. 卡了好長時間是因爲這個交換兩個數需要特別注意,順序錯了不行,因爲交換的

原创 leetcode100_相同的樹_二叉樹

/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode

原创 leetcode567_字符串的排列_滑動窗口

1. 這題的思路和leetcode76_最小覆蓋子串 https://blog.csdn.net/qieyuan4083/article/details/103983764 思路一致. class Solution { public:

原创 leetcode1040_移動石子直到連續||_滑動窗口

1. 這題出的真的乍一看到一點思路都沒有. 2. 參考別人的題解纔看出端倪. 3. 首先看最大移動次數是多少.因爲只要我們將第一個數字stones[0]移動到stones[1]後,接下來就一定可以以間隔1按照剩下的縫隙填補,所以移動次數

原创 leetcode150_逆波蘭表達式求值_棧

1. 整體思路,定義數據棧存放數據, 只要遇到運算符就出棧兩個數做加減乘除處理. class Solution { public: int evalRPN(vector<string>& tokens) { s

原创 leetcode4_尋找兩個有序數組的中位數

1. 在統計中,中位數被用來: 將一個集合劃分爲兩個長度相等的子集,其中一個子集中的元素總是大於另一個子集中的元素。 2. 解法1 簡單粗暴,先將兩個數組合並,兩個有序數組的合併也是歸併排序中的一部分。然後根據奇數,還是偶數,返回中

原创 leetcode234_迴文鏈表

一. 迭代 1. 邊移動快慢指針邊反轉鏈表的前半部分,等找到鏈表中點,再將前半部分與後半部分依次比較,判斷是否爲迴文鏈表. //大佬的思路, 反轉後半部分. class Solution { public: //題解:快慢指針法

原创 寫樹算法的套路框架(摘抄labuladong大神)

1.  但是這個算法出現了錯誤,BST 的每個節點應該要小於右邊子樹的所有節點,下面這個二叉樹顯然不是 BST,但是我們的算法會把它判定爲 BST。 2.  出現錯誤,不要慌張,框架沒有錯,一定是某個細節問題沒注意到。我們重新看

原创 leetcode153_尋找旋轉排序數組中的最小值_二分查找

1. 這題雖然不是完全有序,但是部分有序,可以試試二分查找方法,並且使用的是數組這樣的存儲形式,根據下標隨機訪問,適合二分. class Solution { public: int findMin(vector<int>&

原创 leetcode978_最長湍流子數組_滑動窗口或動態規劃

1. 首先假設A[right]和A[right-1]之間的關係是大於小於等於分別爲1,-1,0. 這樣問題轉化爲最長的連續變換符號的1,-1,1,-1.......字符串長度有多長. 2. 然後我們可以用滑動窗口方法來做, 注意當條件不

原创 leetcode142_環形鏈表||

一. 參考 leetcode141_環形鏈表_雙指針 https://blog.csdn.net/qieyuan4083/article/details/104336903 二. 哈希表,第一個重複的即爲環的入口.時間O(n),空間O(

原创 leetcode2_兩數相加_鏈表

1. 用carry來每次更新進位. 2. 考慮特殊情況, [0,1]和[0,1,2], []和[0,1], [1]和[9,9], 即額外的進位. /** * Definition for singly-linked list. *

原创 leetcode2_兩數相加_鏈表

/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode

原创 leetcode3_無重複字符的最長子串_滑動窗口

class Solution { public: int lengthOfLongestSubstring(string s) { //初始條件 if(s.length()==0) return

原创 leetcode9_迴文數_判斷整數是否迴文數

1. 負數不是. 2. 溢出也不是. 3. 時間複雜度log(x). class Solution { public: bool isPalindrome(int x) { if(x<0)