Leetcode 刷題筆記


因為我其實不太愛刷題,覺得意義不明… 可能主要因為我的 career path 並非演算法工程師,所以目的性上每個人不太一樣
不過刷題對我來說有另外一個意義是維持語言的手感,不然有時候久沒打一個語言就會失去感覺

於是我去找了別人推薦的清單,想說如果真的要刷就做一些比較有意義的題目,並且做完後也依據我自己的刷題目的和偏好星星

  • 因為都已經是有人推薦的題目,所以即使我覺得只有一顆星他依舊是一題有人推的題目,只是我自己不覺得需要刷,有可能很簡單。也有可能是我覺得就算會了也意義不大
  • 代表我覺得有時間再看就好
  • 代表可以刷
  • 代表一定刷
  • 代表多刷幾次甚至把所有 solution 都弄懂

所以以下就根據別人的推薦 list 來分別把題目都列一下


Blind Curated 75

Link of the Original List

# Title Level Star Tag Comments
1 Two Sum Easy array 小暖身而已
3 Longest Substring Without Repeating Characters Medium string 可與 #340 Longest Substring with At Most K Distinct Characters 對照。因為本題是要求完全不重複,所以我們的 map 是記 char 出現過的 index,這讓我再發現重複的時候,可以直接調整 window 的 head 到新的位置;但 340 是容許 k 次重複,所以若我們的 map 改記得的是 char 出現的次數,那每當重複次數超過容許值因而要調整 head,就要一步一步調,當然如果 map 是把每個 char 出現的位置都記錄下來,自然也就可以一次調到位。有就是說 340 其實比較有 slide window 的感覺,但本題其實不需要明確有 window 的概念,而是比較像維護一個 valid head 的 index 就可以
5 Longest Palindromic Substring Medium dp string 不算難,但可以作為 DP 的題目,或者是進階演算法有興趣的可以藉此研究 Manacher’s algorithm
11 Container With Most Water Medium 2pointer 暴力解很容易,進階解不一定想到到。但只要先以左右兩側為第一個選擇,想辦法去提升容量,演算法就很容易出來
15 3Sum Medium array 暴力解就是 O(n^3),進階解不一定想到到。想有比 O(n^3) 快的方法,掃一次是一定需要的,所以至少有 n,重點在於掃一次取得第一個數後,怎麼挑另外兩個數,並且不能是 O(n^2),所以合理可以想到嘗試先 sort 過,那接下來就會變得跟 #11 Container With Most Water 很像。但另外還有檢查重複的部分也需要一些琢磨
19 Remove Nth Node From End of List Medium ll 暴力解很容易,進階解要想一下,也是個典型 2-pointer 問題。如果對 Rust 有興趣的可以就本題了解一些 Rust 的限制。fast slow 是 2-pointer 問題中常見的技巧
20 Valid Parentheses Easy string 經典題,很容易,但如果沒有做過還是可能會漏一些東西
21 Merge Two Sorted Lists Easy ll sort 很容易,但 Python 的 List 太強大,用久了可能會忘了在有限制的單向串列狀況下怎麼處理這個問題。同時這也是一題可以觀察 Rust 語言特性的題目
23 Merge k Sorted Lists Hard ll sort 其實應該不到 Hard,尤其是如果已經做過 #21 Merge Two Sorted Lists。把 merge 2 個轉換成 merge k 個並沒有額外需要什麼高明想法,唯一可能就是先把他們維持排序好,這樣選下一個的時候就很好選。更高級一點就是用 heap 來維護這些 list 的順序
33 Search in Rotated Sorted Array Medium search 需要一點觀察,有可能會走錯方向,另外大於小於其實也有點煩
39 Combination Sum Medium sum 只要注意到數字可以被重複使用,那這題蠻直觀的其實
48 Rotate Image Medium 2darray 兩種解法,一種很容易看到眼花,一種要做過才知道
49 Group Anagrams Medium string 土法煉鋼,沒什麼高深想法,稍有練習不同語言基本語法的作用。字元組成相同,代表每一個 char 使用的次數相同,所以問題就轉變為替每一種樣式創造一個 unique 的 identifier
53 Maximum Subarray Easy sum 我覺得這題可能也可以 Medium。會被歸在 Easy 大概是因為 O(n) 解就是很典型的這類 array 題 greedy 的思路,他是一題經典的基本 DP (Dynamic Programming) 題,也就是存在 f(i) = g(f(i-1)) 這樣的特性,本題的 g 就是 max(f(i-1)+nums[i], nums[i])。另外有 O(n log n) 的 divide and conquer 解可能是直觀一點的解,是一個典型的 divide and conquer 範例,所以可能也是另一個歸在 Easy 的原因吧
54 Spiral Matrix Medium 2darray 就分四組細心處理完就好,沒什麼
55 Jump Game Medium sum 培養認出適合用 Greedy 演算法的問題類型,DP (dynamic programming) 和 Greedy 都是算處理本題蠻直觀的想法,但先想到哪一個就有可能導致造盲區而想不到另一個
56 Merge Intervals Medium interval 想出解法容易,但可能會瑣碎,不一定能直接想到最簡潔的解法,讓其變簡潔的關鍵就是要先把 intervals 據其起點做 sort
57 Insert Interval Medium interval 隨然說是 #56 Merge Intervals 的延伸,但也不見得就做得出這題
62 Unique Paths Medium p&c 基本排列組合數學題
70 Climbing Stairs Easy recursive recursive 的課本基礎範例
73 Set Matrix Zeroes Medium 2darray 應該算 Easy,沒什麼特別的…
76 Minimum Window Substring Hard 2pointer 想法本身是 Medium 等級,因為題目有說要 O(m + n) 的解,這反而成了提示,所以想法本身不難。不過要實作因為有好些細節所以可以到 Hard
79 Word Search Medium 2darray dfs 想法不難,但要成功寫實作出來有可能會卡住
91 Decode Ways Medium string 沒什麼特別的,幾乎算 Easy 吧
98 Validate Binary Search Tree Medium tree dfs bst 雖然星星多,但只是因為他是演算法基本功,這其實不應該是刷題了才會的東西,所以他應該要歸在 Easy。課本上判斷一個 BST 是否合法的方法就是用 DFS 的 in-order traversal 看數字是否遞增。頂多實作上需要注意的是 recursion 中 return 的效果,如果發現不合法應該就可以直接終止,不用全部走完
100 Same Tree Easy tree 就…基本題
102 Binary Tree Level Order Traversal Medium tree bfs BFS order 使用 queue 來 traverse 是基本概念,但他要把同一 level 的都明確搜集在一起,這就需要另外有方法意識到當前的 level,所以歸在 medium
104 Maximum Depth of Binary Tree Easy tree dfs 就…基本題
105 Construct Binary Tree from Preorder and Inorder Traversal Medium tree dfs 算是經典題吧,解法沒做過不容易想到,要特別記一下
121 Best Time to Buy and Sell Stock Easy array 暴力解就是 O(n^2),但再仔細想一下其實走一輪就可以有答案,強迫自己以人類的角度走一輪就要得出答案,演算法自然就出來了
124 Binary Tree Maximum Path Sum Hard
125 Valid Palindrome Easy string 2pointer 沒什麼…
128 Longest Consecutive Sequence Medium array 題目規定要 O(n),如果不做 sort 那感覺一定大於 O(n),如果做 sort 那至少 O(nlogn),所以如果一定要 O(n),就一定是需要額外記憶體,並且可能是 O(2n) 之類的。先將其轉成 set 或 hashmap,這可以在 O(n) 完成,然後在 traverse 一次就可以有解
133 Clone Graph Medium graph 沒什麼太特別的,注意不要無窮 recursion 就行了
139 Word Break Medium string 用 DP 分解這很直覺,但 iteration 應該選用走 wordDict 會比走 s 省時間。並且還有兩個優化,一是先把 wordDict decending sort;二是記住嘗試過哪個 offset 開始是無解的
141 Linked List Cycle Easy ll 沒什麼,是可以用額外的 set 來記有沒有走過某的 node,不過其實這種題典型應該是用 slow fast pointer,就不需要額外空間
143 Reorder List Medium ll O(3n) 也算 O(n),分成三步做,1 找到中點切成兩個 list,2 把後半部 reverse,3 merge 兩個 list
152 Maximum Product Subarray Medium array code 幾行就可以完成,主要是演算法要想出來。關鍵是 contiguous,對於這種有 contiguous 限制的題目特性,有一種最為常見的思考模式需要訓練一下。另外就本題來說,思考邏輯上可以是漸進式的,首先想如果都是非 0 正整數該怎麼解,然後想如果有 0 該怎麼解,最後再想如果有負數該怎麼解
153 Find Minimum in Rotated Sorted Array Medium search #33 Search in Rotated Sorted Array 相同且更容易
190 Reverse Bits Easy bit 沒什麼
191 Number of 1 Bits Easy bit 沒什麼
198 House Robber Medium dp 典型 DP 題,另外有關鍵是識別出可將 DP 的 recursive function call 簡化為 iteration。DP 問題只的就是每一的解會跟其他輪有關係,若後面輪次的解只跟其前面輪次有關係,那自然就可以用 iteration 即可毋需使用到 recursion
200 Number of Islands Medium 2darray 不難想,想到後也不難做出來
206 Reverse Linked List Easy ll 基本題,recursion 和 iteration 作法都熟悉一下
207 Course Schedule Medium graph dfs 偵測單向圖中是否有循環的基本題。Recursive 走 DFS,如果走到重複的就是有循環。雖然每一個點都要為 root 去走 DFS 以避免漏掉獨立的迴圈,但可以另外透過記憶哪些點已經檢查通過了來避免重工
208 Implement Trie (Prefix Tree) Medium string bst 沒什麼,就是 string 版本的 binary search tree
211 Design Add and Search Words Data Structure Medium string 可以用 map/dict 來實作,概念上其實變得像一棵樹
212 Word Search II Hard
213 House Robber II Medium dp 相較於 #198 House Robber 因為變成 circle 所以需要多一個關鍵想法:對於本題存在一個最佳解,那我們若任選一點 x,該點 x 只有『存在於最佳解中』和『不存在於最佳解中』兩種可能性;對於 x 不存在於最佳解中的這種可能行,本題的最佳解形同由 x+1 ~ x-1 這個 circle 的最佳解;而對於 x 存在於最佳解中的這種可能性,本題的最佳解形同由 x ~ x-2 這個 circle 的最佳解。所以若我們將 x 選為 0,那只要針對 arr[0:n-1] 和 arr[1:n] 分別去求解,再取其大者即可
217 Contains Duplicate Easy array 暖身吧…
226 Invert Binary Tree Easy tree 暖身吧…
230 Kth Smallest Element in a BST Medium tree bst dfs 基本題的小延伸吧。從小排到大就是 in-order traversal,那自然可以知道第 k 小的是誰,加上一些優化就可以在得到第 k 個時就不要再繼續走下去
235 Lowest Common Ancestor of a Binary Search Tree Easy tree bst 沒什麼,他是一個 BST,比 root 小的在左邊,比 root 大的在右邊,如果 p,q 都比 root 小,那 LCA 就往左邊找,反之往右邊;如果 root 值介於 p,q 之間,那 p,q 分別在 root 的左右子樹,此時找 LCA 不可能往左右字數去移動,因為一但移動,必定會失去 p,q 其中之一,這也代表 root 本身就是 LCA
238 Product of Array Except Self Medium array 沒做過不一定想得到,關鍵想法在 prefix 和 suffix,prefix/suffix 指的是某一個數 前面所有數/後面所有數,每一個數對應的解就是 product of prefix 乘上 product of suffix。如此一來 2 passes 就可以解出來,時間複雜度就是 O(n),並且只需要額外一塊等長的 space
242 Valid Anagram Easy string #49 Group Anagrams 的基礎題
Meeting Rooms Medium
Meeting Rooms II Medium
Graph Valid Tree Medium
268 Missing Number Easy array #41 First Missing Positive 一樣,用 2n space 會很簡單,用 n space 會稍難一點
Alien Dictionary Medium
Encode and Decode Strings Medium
295 Find Median from Data Stream Hard
297 Serialize and Deserialize Binary Tree Hard
300 Longest Increasing Subsequence Medium array 這種 array 類型一慣的思路都是用 greedy,就是從頭走,一步一步多看一個數字,然後去更新最佳解。但即使這題也是相同,不過沒做過還是不容易想到做法
322 Coin Change Medium array 第一個誤區是 greedy 無法解這題,例如 [23, 22, 7 ,1]29,用 greedy 會得到 23+1+1+1+1+1+1,但其實 22+7 才是最佳解。但我們知道這題還是 DP,DP 就是前後輪次有關聯,比如 f(n) = g(f(n-i)),而實作就有兩種方向,若我們從 f(n) 出發,那就會變 recursion;若從 f(0) 出發,就會是 iteration
Number of Connected Components in an Undirected Graph Medium
338 Counting Bits Easy bit 暴力解就是 O(nlogn),如果要 O(n) 解就要有分解的 DP 想法,可已歸在 Medium 等級:一個整數 n,假設他的 binary representation 有 5 bits,那他的 1 的數量,就會是右邊 4 bits 的 1 的數量,加上最左側是否為 1,為什麼要這樣拆解?因為最左側是否為 1 這我們直接 mod 2 就可以知道,而右邊 4 bits 的 1 的數量,因該是在前面的輪次當中就已經得到答案
347 Top K Frequent Elements Medium array heap 用 map 統計很容易,但統計完後要找最大的前 k 個,也就是要做 sort,且題目要 O(nlogn) 那就可以用 heap sort,沒有一定,只是本題特性上就也剛好也蠻適合就拿來練一下 heap sort
371 Sum of Two Integers Medium bit Bit operation 都不適合用 python,因為 python 的 int 不受限於 32 bits,他可以很大,但為達成這個,shift bit 的行為就跟其他語言不一樣。所以這題用 C 或 Java 來做:XOR 可以得到該 bit 的結果,AND 可以得到是否要進位,recursive 直到不需進位為止
417 Pacific Atlantic Water Flow Medium 2darray #200 Number of Islands 有些類似。可以反著想:從 Pacific 出發可以到達的地方,以及從 Atlantic 出發可以到達的地方,這兩個部分的交集就是答案
424 Longest Repeating Character Replacement Medium array 一樣是 greedy slide window 可以解的問題,關鍵在於要認知到調整 window head 的時機是目前 window length 減去目前 window 中最常出現的那個字的次數超過 k 的時候,這代表我們就算用去 k 次機會也無法把目前的 window 都變成同一個字,所以這就是一個要縮 head 的來 recover 的時機
435 Non-overlapping Intervals Medium interval #56 Merge Intervals 類似
572 Subtree of Another Tree Easy tree 要實際做一下
647 Palindromic Substrings Medium string #5 Longest Palindromic Substring 類似,就是細心一點做吧…

Programcreek- Algorithm Problem Classification

Link of the Original List

Array / String

# Title Level Star Tag Comments
Medium
Medium
Medium

Matrix

# Title Level Star Tag Comments
Medium
Medium
Medium

Linked List

# Title Level Star Tag Comments
Medium
Medium
Medium

Tree

# Title Level Star Tag Comments
Medium
Medium
Medium

Stack

# Title Level Star Tag Comments
Medium
Medium
Medium

DFS

# Title Level Star Tag Comments
Medium
Medium
Medium

Dynamic Programming

# Title Level Star Tag Comments
Medium
Medium
Medium

Data Structure Design

# Title Level Star Tag Comments
Medium
Medium
Medium

Bit Manipulation

# Title Level Star Tag Comments
Medium
Medium
Medium

Graph

# Title Level Star Tag Comments
Medium
Medium
Medium

Math/Numbers

# Title Level Star Tag Comments
Medium
Medium
Medium

Microsoft

IGotAnOffer

Microsoft software engineer interview: the only post you’ll need to read
the post is summarizing 250 feedbacks on Glassdoor.

Arrays / Strings (36% of questions, most frequent)

# Title Level Star Tag Comments
151 Reverse Words in a String Medium string 如果知道使用 split() 和 join() 會只需要 1 行。如果不知道或不能用,那從尾開始走會比從頭開始走好
1 Two Sum Easy array 應該只是暖身…
79 Word Search Medium 2darray dfs 想法不難,但要成功寫實作出來有可能會卡住
41 First Missing Positive Hard array 題目規範 O(n),需要意識到數列長度是一個可以在 O(n) 取得的資訊,O(2n) 也是算 O(n)。一但長度也是已知資訊,要想出演算法概念不難,不過要實作出來可能會遇到鬼打牆的狀況,所以還是可以算是一題 Hard 等級的題目
722 Remove Comments Medium string 我覺得如果白板考這一題會非常難做對,除非已經寫過至少三四次;我也覺得不太可能純白板場合考這題,因為人工跑 test case 很容易眼花撩亂,如果是可以電腦跑 test case 的環境比較有可能考到。我認為這題最簡潔的寫法只有一種,如果沒有把這種寫法細節都記下來,其他比他更瑣碎一點的寫法都可能導致在更多細節有錯誤
54 Spiral Matrix Medium 2darray 就分四組細心處理完就好,沒什麼
443 String Compression Medium string array 沒什麼特別的,細心做完即可,另外如果是 python 應該不會選這一題,其實只要題目規範到 string 且規定使用 Spece O(1) in-place replacement 的問題 python 都不太適用
340 Longest Substring with At Most K Distinct Characters Medium string 用 map 來記住看過的東西就行,詳細一點可以用 map<char, \[int\]> 記所有出現的位置,但其實只需要用 map<char, int> 記住出現的次數就行了,實作結果來說,記所有出現的位置對於速度沒有必然性的提升

Linked lists (29%)

# Title Level Star Tag Comments
25 Reverse Nodes in k-Group Hard ll Revert linked list 升級版
138 Copy List with Random Pointer Medium ll 不使用額外空間的解法沒做過不容易想到
23 Merge k Sorted Lists Hard ll sort 其實應該不到 Hard,尤其是如果已經做過 #21 Merge Two Sorted Lists。把 merge 2 個轉換成 merge k 個並沒有額外需要什麼高明想法
24 Swap Nodes in Pairs Medium ll 不難但就是把圖畫出來細心一點確認每個該改的都有改到
148 Sort List Medium ll sort #21 Merge Two Sorted Lists 的延伸,題目規範的 O(n logn) time and O(1) memory (i.e. constant space) 反而成為提示

Graphs / Trees (20%)

(樹/圖 的題目不太可能 online 考,畫就搞半天… 面對面的 onsite 比較有可能)

# Title Level Star Tag Comments
105 Construct Binary Tree from Preorder and Inorder Traversal Medium tree dfs 算是經典題吧,解法沒做過不容易想到,要特別記一下
297 Serialize and Deserialize Binary Tree Hard
428 Serialize and Deserialize N-ary tree Hard
285 Inorder Successor in BST Medium tree dfs 我們知道 BST 的 inorder traversal 就是會產生由小到大的數列。所以暴力解就是把整個 inorder traversal 走完,自然知道 successor 是誰,那就是 O(n)。不過因為本身是一個 BST,所以理論上找到目標應該是 O(h) 就夠。所以進階解就是從 BST root 開始走,逐漸逼近目標,把前一級的那個比目標大的點記住;這個記憶的值會一直縮小,因為你是一直在逼近目標當中,所以途經的任何比目標大的點,他的趨勢都是會一直變小。抵達目標之後,我們知道他的 inorder successor 就是會比他恰恰稍大一點:所以若此目標點有右子樹,那就會是右子樹當中的最小值;如果此目標點沒有右子樹,那他的 successor 就會是我們曾經走過的記憶的那個點;如果也不存在這個點,也就是沒有 successor,代表目標已經是 BST 中的最大值
510 Inorder Successor in BST II Medium
98 Validate Binary Search Tree Medium tree dfs bst 雖然星星多,但只是因為他是演算法基本功,這其實不應該是刷題了才會的東西,所以他應該要歸在 Easy。課本上判斷一個 BST 是否合法的方法就是用 DFS 的 in-order traversal 看數字是否遞增
450 Delete Node in a BST Medium tree dfs bst 演算法部分是課本基礎,但實作有個關鍵是找到要上移的節點之後,可以繼續使用我們的 delete() 去把要上移的節點從子樹中刪除
797 All Paths From Source to Target Medium graph dfs dag 一個有向無循環圖要找所有 path,無循環我們就可以用 greedy,所以演算法部分不難。實作部分,每次的 recursion,用回傳值來傳遞 path 比較不好,因為視語言使用的資料結構有可能在 push_frount() 這種操作有負擔,所以維護一個 global 的 path/paths,動態的 push/pop 是較佳的做法

Search / Sort (6%)

# Title Level Star Tag Comments
200 Number of Islands Medium 2darray 不難想,想到後也不難做出來
116 Populating Next Right Pointers in Each Node Medium tree bfs [#102 Binary Tree Level Order Traversal] 差不多
4 Median of Two Sorted Arrays Hard array sort Medium 而已吧,跟 [#21 Merge Two Sorted Lists] 差不多
74 Search a 2D Matrix Medium 2darray search 不難,一樣想成一維 binary search 只要在 index 上做簡單換算就行

Dynamic programming (5%)

# Title Level Star Tag Comments
Medium

Bit manipulation / Maths (4% of questions, least frequent)

(這種題型基本上是選 C/C++ 才會有啦,不然用 python 搞 bit operation 沒什麼意思)

# Title Level Star Tag Comments
1239 Maximum Length of a Concatenated String with Unique Characters Medium p&c string bit 兩個關鍵,第一個是要會由一個給定的 list 去列出所有的無序組合;第二個是透過 bit 來取代 map 做記憶可以節省記憶體,不過如果是 python 這麽高階的語言,就不要搞什麼 bit operation 了,記憶體就給他用下去,直接用 set 來記憶就行了
136 Single Number Easy bit xor 就是需要記得 XOR 的特性… n^n=0, n^0=n, a^b^c=b^c^a,所以 a^b^c^d^b^a^d = a^a^b^b^c^d^d = 0^0^c^0 = c

Amazon

ayedot

All Paid Amazon Leetcode Question for Interview and Practice For Free

# Title Level Star Tag Comments
1 Two Sum Easy array 小暖身而已
5 Longest Palindromic Substring Medium dp string 不算難,但可以作為 DP 的題目,或者是進階演算法有興趣的可以藉此研究 Manacher’s algorithm
21 Merge Two Sorted Lists Easy ll sort 很容易,但 Python 的 List 太強大,用久了可能會忘了在有限制的單向串列狀況下怎麼處理這個問題。同時這也是一題可以觀察 Rust 語言特性的題目
22 Generate Parentheses Medium p&c 自然想到 recursive,但如果是想做成 f(n) = g(f(n-1)),那會很難做,因為要處理重複性的問題。所以本題用 greedy 排列組合想法才比較好,從 "" 開始把所有的能都長出來
56 Merge Intervals Medium interval 想出解法容易,但可能會瑣碎,不一定能直接想到最簡潔的解法,讓其變簡潔的關鍵就是要先把 intervals 據其起點做 sort
59 Spiral Matrix II Medium 2darray #54 Spiral Matrix 差不多,分四組細心處理完就好,沒什麼
63 Unique Paths II Medium 2darray 不像 #62 Unique Paths 可以直接算,本題要跑。兩種作法 recursion 和 iteration,兩個方向,一個是從終點往回看 f(x,y) = f(x-1,y) + f(x,y-1),一個是從起點開始看 f(x,y) = f(x+1,y) + f(x,y+1)
64 Minimum Path Sum Medium 2darray graph 算是 shortest path 的基本題
96 Unique Binary Search Trees Medium BST 因為本題數字不會跳躍,所以觀察一下就知道是 DP 題,也就是 f(n) 會與之前的 f(n-i) 相關
138 Copy List with Random Pointer Medium ll 不使用額外空間的解法沒做過不容易想到
167 Two Sum II - Input Array Is Sorted Easy array 從左右兩側往內選
240 Search a 2D Matrix II Medium 2darray #74 Search a 2D Matrix 不同,這題不是 binary search,而是需要從另一角度。
Medium
Medium
Medium

TECHYIELD

Amazon List of LeetCode Questions

# Title Level Star Tag Comments
Medium
Medium
Medium

alexlop

Amazon Final Interview Questions | SDE1

# Title Level Star Tag Comments
Medium
Medium
Medium

more

Discussions on LeetCode


yanwei-liu

Top LeetCode Interview Questions

# Title Level Star Tag Comments
Medium
Medium
Medium

PTT tnfshjcc

[心得] 我的leetcode刷題清單

# Title Level Star Tag Comments
Medium
Medium
Medium

Kohei Arai

60 LeetCode problems to solve for coding interview

# Title Level Star Tag Comments
Medium
Medium
Medium

Javarevisited

Top 30 Microsoft Interview Questions for Software Development Engineers (SDE)

# Title Level Star Tag Comments
Medium
Medium
Medium

CareerCup

Link of the Original List

# Title Level Star Tag Comments
Medium
Medium
Medium

Others

# Title Level Star Tag Comments
HackerRank Sorting Array of Strings Hard string sort 基本 sort string 演算法的實作
HackerRank Permutations of Strings Medium string p&c 產生所有排列組合的其中一種演算法
HackerRank Sliding Window Maximum Medium 2pointer Slide window. O(n) 解沒做過不容易想到
179 Largest Number Medium array 需要一個簡單但常常被忽略的想法,在排列組合比大小的情境當中,如果是 greedy 可解,那我們不斷要下的決定就是下一個要選誰,所以我們會需要有邏輯去判別出 AB 誰對於答案更有幫助,這個想法就會把我們導向去分析 AB 的內容;但是有另外一個想法在本題更為適用,若我們現在選擇 A,其實就代表 ABBA 更好,所以如果分析 ABBA 的優劣比比較 AB 的細部內容更為容易,那就應該採用這個角度
Medium
Medium
Medium

Author: Chris Chung
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Chris Chung !
  TOC