原创 LeetCode - 200. Number of Islands
和前面一道在矩陣裏搜索的題目一樣,不過記不太清楚是哪一道題目了,算法都是對matrix中的所有元素進行DFS搜索。每當發現一個'1'也就是找到一個島的時候,就使用DFS把與它相連的所有爲‘1’的元素都設置爲‘0’,防止接下來的重複搜索,代
原创 LeetCode - 89. Gray Code
這道題目總的來說可以進行兩大步的分析,首先我們需要分析一下對於某個n的時候,會產生多少個gray code: 當n = 1時,產生2個gray code; 當n = 2時,產生4個gray code; 當n = 3時,產生8個gray c
原创 LeetCode - 257. Binary Tree Paths
這道題目和前面的Path Sum, Path Sum II, Combination Sum, Combination Sum II, Subsets, Subsets II題目的思路和做法是一樣的,需要放在一起多看。但是這道題目與前面不
原创 LeetCode - 143. Reorder List
這道題目總的來說可以分三步,第一步是找到Linked List的中點,第二部是翻轉Linked List的後半部分,第三部就是把Linked List按照題目的要求進行reorder,現在大的思路已經明確,接下來我們所需要的就是思考這三步
原创 LeetCode - 150. Evaluate Reverse Polish Notation
我們都知道計算逆波蘭表達式需要使用Stack,所以這道題目要使用一個Stack數據結構:我們把遇到的數字push進stack裏面,而每次遇到四種運算符號的時候,我們就把相應的運算數pop出stack,而在
原创 LeetCode - 208. Implement Trie (Prefix Tree)
https://leetcode.com/articles/implement-trie-prefix-tree/ 知識點: 1. 新的數據結構,非常有用,記一下
原创 LeetCode - 168. Excel Sheet Column Title
我們可以注意到以下幾點: (char)(n % 26 + 'A')得到的是轉化後的第一個元素 n /= 26得到的是轉化出最右邊的一個字符之後剩下的需要轉化的數字 所以我們可以重複上面的步驟直到n = 0,代碼如下: public cla
原创 LeetCode - 147. Insertion Sort List
Insertion Sort的思想是逐步將後面的元素插入到前面相應的位置中來,知道了Insertion Sort的這個思想,我們可以將這種方法用到Linked List上面。另外,由於Linked List的頭部或許發生改變,所以我們需要
原创 LeetCode - 299. Bulls and Cows
我們可以使用一個HashMap來記錄character和其出現的次數,如果secret.charAt(i) == guess.charAt(i),那麼bull++;如果secret.charAt(i) != guess.charAt(i)
原创 LeetCode - 165. Compare Version Numbers
比較兩個版本號的大小,首先自然是把兩個String以"."分離開來,然後對它們一個一個進行比較。注意當其中的一個版本號長度比較小的時候,就在比較中將它設置爲0,整體的代碼如下: public class Solution { pu
原创 LeetCode - 328. Odd Even Linked List
這道題目的思路同樣也比較巧妙,在這道題目的解法中,我們並不是一個一個地去移動node,而是分別將odd nodes和even nodes串成兩個Linked List,然後再將odd list尾部的next結點指向even nodes結點
原创 LeetCode - 173. Binary Search Tree Iterator
要求實現Binary Search Tree的hasNext()和next()操作,最小的元素自然是從root開始一直找左子樹左子樹直到爲空,這是我們找到了我們需要的第一個元素,但是接下來的元素怎麼辦呢?Binary Search Tre
原创 LeetCode - 134. Gas Station
首先我們經過思考可以發現這道題目有兩個性質: 1. 如果從A點沒有辦法到達B點,那麼從A和B之間的任何點出發都無法到達B點 2. 如果circle中總的gas大於總的cost,那麼一定會存在一個解 根據以上的思路,我們可以寫程序。首先假設
原创 LeetCode - 292. Nim Game
這道題目只要仔細思考分析問題的規律,就可以發現解題的方法: 代碼如下: public class Solution{ public boolean canWinNim(int n){ return n % 4 != 0; } }
原创 LeetCode - 172. Factorial Trailing Zeroes
注意可能的重複出現,上面解釋的不是很清楚,比如說25,25 = 5 * 5,而25中的這個5已經在n / 5的時候已經計算過一次,所以只要計算n / 25即可;下一個125中是3個5相乘,而其中兩個5已經計算過了,所以這時只要計算n /