目標:選取這題主要目的在於了解二元樹基本的延伸以外,也介紹了另一個常用的資料結構:Queue,用以處理迭代解(Iterative solution)的方法。 原...
目標:這題主要目的在於介紹常見的資料結構:樹(Tree) 原題: Question: Given two binary trees, write a funct...
目標:這題主要目的在於理解常見的資料結構:堆疊(Stack),同時也會處理常見的Linked List。 原題: Question: Reverse a lin...
目標:這篇的目標是介紹Gray Code以及二進位的位元運算部分。 原題: Question: The gray code is a binary numera...
目標:選這題的目標旨在說明更為典型的動態規劃算法。 原題: Question: You are climbing a staircase. It takes n...
目標:這題的目標在於講述簡單的字串操作方式,以及簡單的二進位的表示法。 原題: Question: Given two binary strings, retu...
目標:這題主要目的在於學習一個常見的演算法:動態規劃(Dynamic Programming)。 原題: Question: Given an integer...
目標:這題主要目的在於了解如何處理以排序陣列的快速方法:二元搜尋法。 原題: Question: Given a sorted array and a targ...
目標:這題主要目的在於闡明In-place algorithm的含義,以及使用In-place的條件下會受到的限制。 原題: Question: Given a...
目標:這題主要目的在於引導讀者了解Linked List的資料結構以及基本操作。 原題: Question: Merge two sorted linked l...
目標:這題主要目的在於練習Two Pointer類型的問題應用。 原題: Question: Given an array nums of n integers...
目標:這題主要目的在於練習常見的字串比對處理。 原題: Question: Write a function to find the longest commo...
前言 希望透過這系列文章,可以讓自己的演算法、資料結構的基礎知識可以更扎實,也希望這系列文章可以幫助到JavaScript工程師,讓自己寫的程式效率能更好。在...
目標:這題主要目的在於練習HashMap/Dictionary的應用。 原題: Question: Given an array of integers, re...
寫在前面 容許筆者自我工商一下,如果喜歡這一系列的文章,我也有陸續寫新的文章,放在我的Medium中,有興趣的歡迎光臨XD~ 其目錄項次會放在第一篇(在Medi...
這篇文章主要敘述我用基因遺傳演算法解旅行推銷員問題,用的語言是Python。這邊會一步一步帶過程式碼,之後也會上傳到Github。演算法參考:https://t...
Furthest Pair of Points 最遠兩點配對 顧名思義,這個演算法在n個點中,找出擁有最長距離的的兩點。這個方法可以利用凸包的特性,因為凸包上所...
多邊形 多邊形定義為各點互相直線連接所圍成的無開口圖形。多邊形又包含以下幾個種類: Simple Polygon 簡單多邊形 Convex Polygon 凸...
線段交叉判斷方法 線性函數 初等數學方法以多項式函數的方式找出交叉點,換句話說,如果找得出交叉點即兩線段交叉。 算法 當p、q皆存在時應符合 與 如果p...
資料結構 Day 6 - 陣列 (Array) & 串列 (Linked List) Day 7 - 佇列 (Queue) Day 8 -...
昨天有稍微提過因為 Bellman-Ford 演算法不像 Dijkstra 演算法是用貪心策略找出每個頂點的最短路徑去做擴展,今天就來討論如果 Bellman-...
不論是之前提到過的 Floyd-Warshall 或 Dijkstra 演算法,雖然都很好用也好理解,但卻有一個缺點是無法解決帶有「負權迴路」 (或稱「負權環」...
今天來討論最短路徑的另一個演算法,Dijkstra Algorithm。主要內容是指定一個點 (源點) 到其餘各個頂點的最短路徑,也稱作「單源最短路徑」。我們用...
並查集又稱不相交集資料結構,其實是之前討論過的資料樹的延伸。剛開始的樹每一個都是獨立的,一棵樹只有一個節點。在透過尋找相同的根節點 (root),來將這些樹逐漸...
網路上有各式各樣的地圖出現,背後的運算就有很多的演算法、資料庫和參數來支持。還記得之前討論過有關圖的深度及廣度搜尋,就有提到過怎麼找最短的路徑,而這只是其中最基...
先說說什麼是分群?分群就是對所有數據進行分組,將相似的數據歸類為一起,每一筆數據的能有一個分組,每一組稱作為群集 (Cluster)。那分類根據什麼來定義,常用...
廣度優先搜尋 (Breadth-first Search),也稱之為寬度優先搜尋。和深度優先搜尋不同的是,深度優先是透過函數的遞迴來延伸運算,而廣度優先則是透過...
還記得之前有討論過的列舉法嗎?今天我們來做個延伸。 之前的列舉法是將用 for 迴圈的方式,一層一層的舉出所有的可能,然後將所有舉出的可能和我們所設定的條件相比...
在討論費氏搜尋之前,要先了解一下費氏數列。 費氏數列 (Fibonacci numbers),又稱費波那契數列,是指在一串數字中,每一項是前兩項的和。數學上的定...
插補搜尋 (Interpolation Search),其實用的就是數學裡內插法的概念來運算。在已排序的資料中,將資料視為線性的解,藉由在線上的移動來尋找我們需...