iT邦幫忙

演算法相關文章
共有 76 則文章
鐵人賽 自我挑戰組 DAY 4

技術 選擇排序法(Selection Sort)

選擇排序法,主要精神在迴圈找尋選擇最小值,然後將最小值與第一個值交換。 假設有一陣列[7,5,1,20,8],並假設最小值是第一個數值(7),第一個數值就與...

鐵人賽 Software Development DAY 4
從LeetCode學演算法 系列 第 4

技術 [Day 4] 從LeetCode學演算法 - 0015. 3Sum (Medium)

目標: 這題主要目的在於練習Two Pointer類型的問題應用。 原題: Question: Given an array nums of n integer...

鐵人賽 Software Development DAY 3
從LeetCode學演算法 系列 第 3

技術 [Day 3] 從LeetCode學演算法 - 0014. Longest Common Prefix (Easy)

目標: 這題主要目的在於練習常見的字串比對處理。 原題: Question: Write a function to find the longest comm...

鐵人賽 Software Development DAY 2
從LeetCode學演算法 系列 第 2

技術 [Day 2] 從LeetCode學演算法 - 0001. Two Sum (Easy)

目標: 這題主要目的在於練習HashMap/Dictionary的應用。 原題: Question: Given an array of integers, r...

鐵人賽 自我挑戰組 DAY 1

技術 JavaScript 演算法、資料結構第一章(目錄&簡介)

前言 希望透過這系列文章,可以讓自己的演算法、資料結構的基礎知識可以更扎實,也希望這系列文章可以幫助到JavaScript工程師,讓自己寫的程式效率能更好。在...

鐵人賽 Software Development DAY 1
從LeetCode學演算法 系列 第 1

技術 [Day 1] 從LeetCode學演算法 - 緒論:你應該知道的面試基礎和解題技巧

寫在前面 容許筆者自我工商一下,如果喜歡這一系列的文章, 我也有陸續寫新的文章,放在我的Medium中, 有興趣的歡迎光臨XD~ 其目錄項次會放在第一篇(在Me...

技術 用基因遺傳演算法(Genetic Algorithm)解旅行推銷員問題(TSP)

這篇文章主要敘述我用基因遺傳演算法解旅行推銷員問題,用的語言是Python。 這邊會一步一步帶過程式碼,之後也會上傳到Github。 演算法參考:https:/...

技術 [筆記本: 演算法] 多邊形篇 Part 3 - Furthest Pair of Points 最遠兩點配對

Furthest Pair of Points 最遠兩點配對 顧名思義,這個演算法在n個點中,找出擁有最長距離的的兩點。 這個方法可以利用凸包的特性,因為凸包上...

技術 [筆記本: 演算法] 多邊形篇 Part 1 - Simple Polygon 簡單多邊形

多邊形 多邊形定義為各點互相直線連接所圍成的無開口圖形。 多邊形又包含以下幾個種類: Simple Polygon 簡單多邊形 Convex Polygon...

技術 [筆記本: 演算法] Line Segment Intersection 線段交叉判斷

線段交叉判斷方法 線性函數 初等數學方法以多項式函數的方式找出交叉點,換句話說,如果找得出交叉點即兩線段交叉。 算法 當p、q皆存在時應符合 與 如果p...

技術 [完結] 總整理 + 後記

資料結構 Day 6 - 陣列 (Array) & 串列 (Linked List) Day 7 - 佇列 (Queue) Day 8 -...

鐵人賽 Software Development DAY 30

技術 [演算法] 最短路徑 (Bellman-Ford 演算法 - 佇列優化)

昨天有稍微提過因為 Bellman-Ford 演算法不像 Dijkstra 演算法是用貪心策略找出每個頂點的最短路徑去做擴展,今天就來討論如果 Bellman-...

鐵人賽 Software Development DAY 29

技術 [演算法] 最短路徑 (Bellman-Ford 演算法)

不論是之前提到過的 Floyd-Warshall 或 Dijkstra 演算法,雖然都很好用也好理解,但卻有一個缺點是無法解決帶有「負權迴路」 (或稱「負權環」...

鐵人賽 Software Development DAY 28

技術 [演算法] 最短路徑 (Dijkstra 演算法)

今天來討論最短路徑的另一個演算法,Dijkstra Algorithm。主要內容是指定一個點 (源點) 到其餘各個頂點的最短路徑,也稱作「單源最短路徑」。 我...

鐵人賽 Software Development DAY 27

技術 [演算法] 並查集 (Union-find Algorithm)

並查集又稱不相交集資料結構,其實是之前討論過的資料樹的延伸。剛開始的樹每一個都是獨立的,一棵樹只有一個節點。在透過尋找相同的根節點 (root),來將這些樹逐漸...

鐵人賽 Software Development DAY 26

技術 [演算法] 最短路徑 (Floyd-Warshall 演算法)

網路上有各式各樣的地圖出現,背後的運算就有很多的演算法、資料庫和參數來支持。還記得之前討論過有關圖的深度及廣度搜尋,就有提到過怎麼找最短的路徑,而這只是其中最基...

鐵人賽 Software Development DAY 25

技術 [演算法] K-means 分群 (K-means Clustering)

先說說什麼是分群?分群就是對所有數據進行分組,將相似的數據歸類為一起,每一筆數據的能有一個分組,每一組稱作為群集 (Cluster)。那分類根據什麼來定義,常用...

鐵人賽 Software Development DAY 20

技術 [演算法] 廣度優先搜尋 (Breadth-first Search)

廣度優先搜尋 (Breadth-first Search),也稱之為寬度優先搜尋。和深度優先搜尋不同的是,深度優先是透過函數的遞迴來延伸運算,而廣度優先則是透過...

鐵人賽 Software Development DAY 19

技術 [演算法] 費氏搜尋 (Fibonacci Search)

在討論費氏搜尋之前,要先了解一下費氏數列。 費氏數列 (Fibonacci numbers),又稱費波那契數列,是指在一串數字中,每一項是前兩項的和。數學上的定...

鐵人賽 Software Development DAY 18

技術 [演算法] 深度優先搜尋 (Depth-first Search)

還記得之前有討論過的列舉法嗎?今天我們來做個延伸。 之前的列舉法是將用 for 迴圈的方式,一層一層的舉出所有的可能,然後將所有舉出的可能和我們所設定的條件相比...

鐵人賽 Software Development DAY 17

技術 [演算法] 插補搜尋 (Interpolation Search)

插補搜尋 (Interpolation Search),其實用的就是數學裡內插法的概念來運算。在已排序的資料中,將資料視為線性的解,藉由在線上的移動來尋找我們需...

鐵人賽 Software Development DAY 16

技術 [演算法] 二分搜尋 (Binary Search)

還記得之前討論過的樹嗎?都會分成左子樹和右子樹,而二分搜尋也是遵循這樣的邏輯來運算的。 二分搜尋 (Binary Search) 是取 已排序資料的中間索引的值...

鐵人賽 Software Development DAY 15

技術 [演算法] 循序搜尋 (Sequential Search)

講了幾天的資料結構,先來講幾個有關搜尋的演算法,之後再繼續接回資料結構的其他部分。 循序搜尋 (Sequential Search),說白了就是在已排序的資料中...

鐵人賽 Software Development DAY 5

技術 [演算法] 列舉法 (Enumeration)

經過前幾天的演算法,都需要小動腦和邏輯上的思考對吧?透過一些比較和分配的技巧,來做資料的排序。 今天,就來講講列舉法 (俗稱暴力破解法)。 列舉法 (Enume...

鐵人賽 Software Development DAY 4

技術 [演算法] 基數排序法 (Radix Sort)

今天來講一個「非比較性」的演算法,基數排序法 (Radix Sort)。其實之前的排序法也是屬於 非比較性 的演算法。怎麼說?以泡沫和快速為例,這兩個演算法都是...

鐵人賽 Software Development DAY 3

技術 [演算法] 快速排序法 (Quick Sort)

有鑒於昨天學的泡沫排序法,效率篇低,就有某位聰明的科學家發明了快速排序法,其實也有用到一點二元分類的概念。 快速排序 (Quick Sort) 的想法是說,先找...

鐵人賽 Software Development DAY 2

技術 [演算法] 泡沫排序 (Bubble Sort)

拉蒙碎碎念 其實昨天的桶子演算法雖然直覺、簡單好懂,但也遺留了一些問題。舉例來說如果資料很大,就會很浪費空間,或者當資料有小數的時候,沒辦法產生相對應的桶子。因...

鐵人賽 Software Development DAY 1

技術 [演算法] 桶子排序法 (Bucket Sort)

拉蒙碎碎念 還記得以前剛學程式設計的時候,老師都會從幾個較簡單的演算法教起,讓學生比較好學也快上手。其實演算法就是在學邏輯,語法啊、技巧啊,我個人倒覺得是其次。...

鐵人賽 自我挑戰組 DAY 1

技術 Day 1: 演算法無所不在

寫程式的目的,即是把不斷重複的計算流程自動化。而演算法,則是用以明確定義自動化後的計算流程。在設計演算法之前,除了對於要解決的問題有一定程度的認識以外,還必須考...

技術 [LeetCode]N-Queens經典問題八皇后

前言 今日感冒在家剛好利用時間打一篇文章,天氣變冷了大家要多注意保暖阿。 題目 給定數字n,並列出n * n皇后所有可能。 輸入 4 輸出 [ [&quot...