對於軟體工程師來說,演算法絕對是很重要的。既然早晚都要學,不如就趁早開始面對它吧(所謂早死早超生) 這系列文章主要是 LeetCode 的解題筆記,每天會有一些...
講到 LeetCode,大部分人共同的回憶(以及共同的起點)大概就是 two Sum 了吧。這題會給一個陣列以及一個數字,我們要找的,就是陣列中哪兩個數字加起來...
今天要面對的問題是 Sort an Array,一句話解釋呢,就是把拿到的陣列依照大小排列好,然後傳回去。這個問題用 javascript 超級簡單,不信你看:...
今天不解題,但是講講複雜度。複雜度是拿來衡量演算法效率的東西,簡單來說,可以想像成完成這個解法所要執行的運算次數。例如給定資料筆數為 n 的情況下,有的演算法要...
今天要講的是 Dynamic Programming。 Dynamic Programming 在某種程度上來說,也是一種把大問題切成小問題的演算法。但和 Di...
今天要介紹和 Dynamic Programming 有點相似的 Greedy。 Greedy 的核心概念很簡單:選擇你覺得最好的方案就對了。這個選擇的過程是單...
今天介紹一種叫做 Tree 的資料結構,這東西看圖懂一半,所以不解釋直接上圖: (圖片摘自維基百科) 好的,大家應該懂了。Tree 就是一種由上而下的結構,點和...
延續昨天的內容,這邊先貼上示意圖讓大家回憶一下 tree 的結構: (圖片摘自維基百科) 在搜尋的時候,主要有兩種不同的搜尋策略:深度遍歷 DFS(Depth-...
瀕臨死亡的一天,只好翻開覆蓋過的題目結束這一回合。每天都在踩線的邊緣反覆橫跳並且懷疑人生,距離脫離苦海還有三個星期(崩潰)。 還是簡單講一下,主要用到的東西是第...
今天的題目給出一個用文字表示的圖形,當中 1 表示陸地,0 表示海水。相鄰的 1 (上下相鄰或左右相鄰都算)會組成一大塊島嶼,我們要找出的是,題目中共有幾座不相...