(2015/11/28)git
LeetCode 303 Range Sum Query - Immutable:(Easy)算法
1)超時的算法:每次調用sumRange函數進行一次累加運算。數組
2)不超時的算法:改變數組的內容,存儲從0下標到當前下標全部元素的和。每次調用sumRange函數進行一次減法運算。數據結構
LeetCode 290Word Pattern:(Easy)app
1)創建兩個map,使字符和字符串創建一一對應的關係。函數
2)2種狀況的判斷:pattern中的字符比string多,string比pattern中的字符多。spa
LeetCode 283Move Zeroes:(Easy)指針
1)i:指向非零元素要插入的位置;j:尋找下一個非零元素;zeronums:記錄0的個數。orm
LeetCode 263Ugly Number:(Easy)(別人有更快的方法(待看))排序
1)循環除2,除3,除5,判斷最後的結果。
LeetCode 258Add Digits:(Easy)
LeetCode 242Valid Anagram:(Easy)
LeetCode 299Bulls and Cows:(Easy)
LeetCode 292Nim Game:(Easy)
LeetCode 237Delete Node in a Linked List:(Easy)
1)將後面結點的值往前賦值。當下一個結點是最後一個結點時,中止。
(2015/11/29)
LeetCode 217 Contains Duplicate:(Easy)
1)排序比使用set判斷是否重複更快。
LeetCode 171 Excel Sheet Column Number:(Easy)
1)使用下標訪問string比使用迭代器更快。
LeetCode 168 Excel Sheet Column Title:(Easy)
1)除26取餘法,注意判斷餘數爲0的狀況。
LeetCode 191 Number of 1 Bits:(Easy)
1)注意 & 的優先級小於 != 的優先級。
LeetCode 206 Reverse Linked List:(Easy)
1)使用3個結點指針,保存前一個結點,當前修改的結點,備份下一個結點。
(2015/12/5)
LeetCode 202 Happy Number:(Easy)
1)使用set備份,判斷是否出現循環。
LeetCode 231Power of Two:(Easy)
1)位運算(循環)。(打表更快嗎?)
LeetCode 189Rotate Array:(Easy)
1)構造另外一個vector<int>
2)經過3次翻轉進行等效的移位。
LeetCode 160 Intersection of Two Linked Lists:(Easy)
1)計算兩個鏈表的長度。用兩個臨時變量分別指向兩個鏈表,指向較長鏈表的指針提早移動。
(2015/12/6)
LeetCode 190 Reverse Bits:(Easy)
1)位掩碼,位運算。
LeetCode 219 Contains Duplicate II:(Easy)(can't do it)
1)保持一個長度爲k + 1的set。遍歷一次nums。
LeetCode 223 Rectangle Area:(Easy)
1)題目:計算兩個長方體覆蓋的總面積。
2)計算重合的面積。
(2015/12/12)
LeetCode 205 Isomorphic Strings:(Easy)(do more time)
1)不能兩個字符對應同一個字符;若一個字符進行替換,則全部此字符都要進行替換;字符可用自身替換。
2)定義一個map,表示字符的對應關係。定義一個set表示已經進行替換過的字符。
LeetCode 203 Remove Linked List Elements:(Easy)
1)定義now和pre結點指針。注意now是頭結點的狀況。把head表示爲最後鏈表的頭結點。
(2015/12/13)
LeetCode 234 Palindrome Linked List:(Easy)
判斷單向鏈表是不是迴文的。
1)定義一個鏈表翻轉的函數。
2)對後半鏈表進行翻轉,用兩個指針來判斷。
(2015/12/14)
LeetCode 204 Count Primes:(Easy)
計算小於n的素數的個數。
1)思路:偶數不是素數、奇數乘以1個數也不是素數。
2)定義一個bool的容器。
(2015/12/19)
LeetCode 228 Summary Ranges:(Easy)
LeetCode 165 Compare Version Numbers:(Easy)
1)版本號string中只能包含數字和小數點,小數點的個數可能不止1個。
LeetCode 155 Min Stack:(Easy)(參考)
1)使用兩個stack,一個當作普通的棧使用,另外一個用於獲取當前棧中的最小元素。
2)若當前壓入的元素小於等於當前棧中的最小元素時,同時將此元素壓入另外一個棧。
(2015/12/20)
LeetCode 232 Implement Queue using Stacks:(Easy)
用堆棧實現隊列。
1)使用兩個堆棧。
LeetCode 225 Implement Stack using Queues:(Easy)
用隊列實現堆棧。
1)使用兩個隊列。
LeetCode 278 First Bad Version:(Easy)
1)遞歸
2)求中點不能使用 int mid = (begin + end) / 2; 會溢出。可使用double變量。
LeetCode 136 Single Number:(Easy)
1)排序,能夠不使用額外的空間。可是速度較慢。
2)使用set記錄,速度更慢。
3)參考別人的方法得到了更快的速度:按位異或
一個數本身與本身異或,各個位變成0;
0與任何數異或等於那個數本身;
異或運算知足交換律。
LeetCode 260 Single Number III:(Easy)(參考待看)
1)排序。
LeetCode 122 Best Time to Buy and Sell Stock II:(Easy)(參考待看,《算法導論》)
1)由股票價格數組獲得天天相對於前一天的收益數組。
LeetCode 238 Product of Array Except Self:(Easy)(參考待看:常數空間複雜度)
1)使用兩個數組:一個數組中的元素表示,此元素及以前全部元素的乘積。一個數組中的元素表示,瓷元素及以後全部元素的乘積。
LeetCode 144 Binary Tree Preorder Traversal:(Easy)
1)遞歸:簡單。
2)使用迭代實現,參考數據結構。
198動態規劃
172n!的性質
319一排燈泡開開關關
(2015/12/26)
LeetCode 268 Missing Number:(Easy)
1)排序後從頭開始判斷。速度較慢
2)使用異或運算。