Leetcode日記6

(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)使用異或運算。

相關文章
相關標籤/搜索