原创 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 /