iT邦幫忙

演算法相關文章
共有 302 則文章
鐵人賽 Software Development DAY 20
從LeetCode學演算法 系列 第 20

技術 [Day 20] 從LeetCode學演算法 - 0111. Minimum Depth of Binary Tree (Easy)

目標:這題主要目的在於讓讀者更清楚樹的深度(depth)的觀念。 原題: Question: Given a binary tree, find its min...

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

技術 [Day 19] 從LeetCode學演算法 - 0124. Binary Tree Maximum Path Sum (Hard)

目標:這題主要目的在於進階探索Tree較複雜的問題。 原題: Question: Given a non-empty binary tree, find the...

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

技術 [Day 18] 從LeetCode學演算法 - 0094. Binary Tree Inorder Traversal (Medium)

目標:這題主要目的在於介紹二元樹的中序走訪,同時用stack結構來講解迭代解的思路。 原題: Question: Given a binary tree, re...

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

技術 [Day 17] 從LeetCode學演算法 - 0098. Validate Binary Search Tree (Medium)

目標:這題主要目的在於介紹二元樹中最常見實用的類別:二元搜尋樹(Binary Search Tree) 原題: Question: Given a binary...

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

技術 [Day 16] 從LeetCode學演算法 - 0136. Single Number (Easy)

目標:這題主要目的在於透過題目來介紹前面提過的Bitwise Operation的應用。 原題: Question: Given a non-empty arr...

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

技術 [Day 15] 從LeetCode學演算法 - 0101. Symmetric Tree (Easy)

目標:選取這題主要目的在於了解二元樹基本的延伸以外,也介紹了另一個常用的資料結構:Queue,用以處理迭代解(Iterative solution)的方法。 原...

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

技術 [Day 14] 從LeetCode學演算法 - 0100. Same Tree (Easy)

目標:這題主要目的在於介紹常見的資料結構:樹(Tree) 原題: Question: Given two binary trees, write a funct...

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

技術 [Day 13] 從LeetCode學演算法 - 0092. Reverse Linked List II (Medium)

目標:這題主要目的在於理解常見的資料結構:堆疊(Stack),同時也會處理常見的Linked List。 原題: Question: Reverse a lin...

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

技術 [Day 12] 從LeetCode學演算法 - 0089. Gray Code (Medium)

目標:這篇的目標是介紹Gray Code以及二進位的位元運算部分。 原題: Question: The gray code is a binary numera...

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

技術 [Day 10] 從LeetCode學演算法 - 0070. Climbing Stairs (Easy)

目標:選這題的目標旨在說明更為典型的動態規劃算法。 原題: Question: You are climbing a staircase. It takes n...

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

技術 [Day 9] 從LeetCode學演算法 - 0067. Add Binary (Easy)

目標:這題的目標在於講述簡單的字串操作方式,以及簡單的二進位的表示法。 原題: Question: Given two binary strings, retu...

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

技術 [Day 8] 從LeetCode學演算法 - 0053. Maximum Subarray (Easy)

目標:這題主要目的在於學習一個常見的演算法:動態規劃(Dynamic Programming)。 原題: Question: Given an integer...

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

技術 [Day 7] 從LeetCode學演算法 - 0035. Search Insert Position (Easy)

目標:這題主要目的在於了解如何處理以排序陣列的快速方法:二元搜尋法。 原題: Question: Given a sorted array and a targ...

鐵人賽 自我挑戰組 DAY 6

技術 希爾排序法(Shell Sort)

希爾排序法其實是優化版的插入排序法,插入排序法只能跟左方一個數值比對,而希爾排序法則是先取一個Gap值作為選取左方數值的間隔值,然後進行比對排序,而Gap在每...

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

技術 [Day 6] 從LeetCode學演算法 - 0026. Remove Duplicates from Sorted Array (Easy)

目標:這題主要目的在於闡明In-place algorithm的含義,以及使用In-place的條件下會受到的限制。 原題: Question: Given a...

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

技術 [Day 5] 從LeetCode學演算法 - 0021. Merge Two Sorted Lists (Easy)

目標:這題主要目的在於引導讀者了解Linked List的資料結構以及基本操作。 原題: Question: Merge two sorted linked l...

鐵人賽 自我挑戰組 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 integers...

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

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

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

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

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

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

鐵人賽 自我挑戰組 DAY 1

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

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

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

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

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

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

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

技術 [筆記本: 演算法] 多邊形篇 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。主要內容是指定一個點 (源點) 到其餘各個頂點的最短路徑,也稱作「單源最短路徑」。我們用...