LeetCode 筆記 (2) – Breadth-First Search
Breadth-First Search在樹狀結構上的表現就是逐層搜尋、批次處理。反過來說只要題目能表現成Tree或Matrix的批次處理,那通常就是用BFS來解題。 在實作的時候可以用Queue或遞迴,用遞迴實作的好處是可以配合題目任意添加參數。大部分的題目每一層之間的處理是無關的,用Queue模擬BFS在解題時會比較好理解跟修改,萬一每批次都需要用到前一層的結果,那就必須改用遞迴實作。
Breadth-First Search在樹狀結構上的表現就是逐層搜尋、批次處理。反過來說只要題目能表現成Tree或Matrix的批次處理,那通常就是用BFS來解題。 在實作的時候可以用Queue或遞迴,用遞迴實作的好處是可以配合題目任意添加參數。大部分的題目每一層之間的處理是無關的,用Queue模擬BFS在解題時會比較好理解跟修改,萬一每批次都需要用到前一層的結果,那就必須改用遞迴實作。
簡介 Binary Search是十分常用的演算法,在許多程式語言中都是陣列或列表的標準函數。以下程式碼整理自OpenJDK :
本筆記的初衷是記錄練習LeetCode的心得,以及歸納好用的核心技巧。有別於其他網路上case by case的逐題解析,我認為要想成功完成面試題,只需要精熟幾項核心技法即可,理由如下 : 通常Easy題就是Medium題目的簡化版,而Hard題是二到三題Medium的結合(或是特殊到無法事前準備的東西),因此把Medium的題目練好即可 Medium題目又分成經典題與變化題,通常經典題就是考核心演算法,變化題則是在核心判斷或邊界條件上做變化,所以必須練熟經典的Medium題 最後就像各種證照可是一樣,平時念書都會,就怕臨場失常寫不出來,偏偏面試時的環境就跟文字編輯器差不多,為了避免失常,最核心的演算法與常用的函數操作就要當背科來練習,秒速解題的肌肉記憶最能讓面試官震驚