iT邦幫忙

演算法相關文章
共有 302 則文章
鐵人賽 Software Development DAY 26

技術 【Day26】[演算法]-快速排序法Quick Sort

快速排序法(Quick Sort)又稱分割交換排序法,是目前公認效率極佳的演算法,使用了分治法(Divide and Conquer)的概念。原理是先從原始資料...

鐵人賽 Software Development DAY 15

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

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

鐵人賽 開發技術 DAY 1

達標好文 技術 [Day01] 30天挑戰演算法 - 開始

「演算法」聽起來好像很難!但是他真的很難嗎? 其實也是有簡單的!「演算法」只是一個比較生硬的名字而已! 根據 維基百科 上的定義 演算法/算則法(Algorit...

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

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

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

鐵人賽 自我挑戰組 DAY 23

技術 Day 23:最小生成樹(MST)

貪婪演算法可以解決的一個問題就是找到一張圖中的最小生成樹(minimum spanning tree)。 樹、生成樹與最小生成樹 我們之前提到資料結構中的樹是有...

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

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

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

鐵人賽 開發技術 DAY 8

技術 [Day08] 30 天挑戰演算法 - 判斷二元搜尋樹

題目來源:Valid Binary Search Tree 問題 給一棵樹,判斷它是否是一棵合法的二元搜尋樹 (BST, Binary search tree)...

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

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

鐵人賽 Software Development DAY 24

技術 【Day24】[演算法]-希爾排序法Shell Sort

希爾排序法(Shell Sort)是插入排序(Insertion Sort)的改良版。可減少插入排序的資料搬移次數,加入了間距(Gap)的概念將資料分成多個小區...

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

技術 [Day 23] 從LeetCode學演算法 - 0169. Majority Element (Easy)

目標:這題主要目的在於介紹一個特別的演算法,它叫做Boyer–Moore majority vote algorithm(摩爾投票算法)。同時,接下來也會多介紹...

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

技術 [Day 21] 從LeetCode學演算法 - 0110. Balanced Binary Tree (Easy)

目標:這題主要目的在於了解平衡樹的觀念,並幫助讀者學習如何考慮一棵樹在高度平衡時的操作所需的時間複雜度。 原題: Question: Given a binar...

鐵人賽 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 20

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

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

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

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

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

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

達標好文 技術 [Day 30] 從LeetCode學演算法 - 結語:從Leetcode學演算法,談軟工與人生

寫在前面的碎碎念: 終於要完賽了~~ 首先容許筆者自我工商一下,如果喜歡這一系列的文章,我也有陸續寫新的文章,放在我的Medium中,有興趣的歡迎光臨XD~ 其...

鐵人賽 Software Development DAY 5

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

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

鐵人賽 自我挑戰組 DAY 21

技術 Day 21:貪婪演算法(greedy algorithm)

之前寫到過分治法,它並不是單一個演算法,而是許多演算法設計的基礎。同理,貪婪演算法也是一種設計模式。這類演算法的作法是,在每一個階段選擇當前最佳解,並以此達到整...

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

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

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

鐵人賽 Software Development DAY 30

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

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

鐵人賽 自我挑戰組 DAY 12

技術 【第十二天 - 遞迴介紹】

Q1. 遞迴 (recursive) 是什麼? 遞迴是一種解題的方法,主要是透過「重複呼叫自身程式碼」,將大問題切成小問題來找到解答 提到 recursive...

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

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

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

鐵人賽 自我挑戰組 DAY 26

技術 Day 26:旅行推銷員問題(TSP)

之前在貪婪演算法的文章中有提到,現實生活中並不是所有問題都能用演算法快狠準地解決,有些困難的問題只有非常慢的解法。旅行推銷員問題(travelling sale...

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

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

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

鐵人賽 自我挑戰組 DAY 19

技術 Day 19:深度優先搜尋(DFS)與拓樸排序(topological sorting)

深度優先搜尋(depth-first search, DFS)是一種搜尋整張圖所有節點的演算法。它的名稱也表達出跟廣度優先搜尋的順序不太一樣,它是從根節點(樹的...

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

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

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

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

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

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

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

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

鐵人賽 Modern Web DAY 10

技術 Trick 9: 活塞運動的嘆息:sin與cos

三角函數是遊戲程式設計師必定要鑽研的課題之一,除了在向量的運算中需要大量的三角函數之外,光是正弦(sine)與餘弦(cosine)這兩個數學式本身,就能帶給遊戲...

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

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

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

鐵人賽 Software Development DAY 17

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

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