iT邦幫忙

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

技術 Day9-[30 Days of JavaScript] LeeCode 2629、2637、2665、2704

2629. Function Composition 解題程式碼 // 解法 1. 最簡潔 const compose = (fs) => (x) =&g...

鐵人賽 自我挑戰組 DAY 8

技術 Day8-[30 Days of JavaScript] LeeCode 2622、2623、2625

2622. Cache With Time Limit 解題程式碼 var TimeLimitedCache = function () { this.ca...

鐵人賽 自我挑戰組 DAY 6

技術 Day6-Dynamic Programming 動態規劃法

此演算法是分治法的延伸,將一個問題分成好幾個小問題,並將小問題解出並記錄答案,例如用一個陣列去儲存,這些小問題的答案就不用被重複計算,最後根據小問題的答案取得整...

鐵人賽 自我挑戰組 DAY 5

技術 Day5-Dijkstra's Algorithm(戴克斯特拉演算法)

在介紹 Dijkstra’s Algorithm 前要先說這是最短路徑問題(Shortest Path)中的一種經典演算法,最短路徑問題是能算出在 graph...

鐵人賽 自我挑戰組 DAY 4

技術 Day4-Graph 圖

簡單說,就是有多個節點(vertex),且彼此有些連接線(edge)的資料結構,以下都是 graph : 並且 graph 種類還能分為有向 & 無...

技術 新書香噴噴-《遊戲設計x演算法xTypescript》出版社對我說『把祕笈通通交出來!』

去年參加鐵人賽的文章,已經成書出版了,除了增加許多細節與心得之外,又多寫了幾個篇章。喜愛製作遊戲的同好,相信讀完一定會有幫助,還可能和我產生共鳴。 全書共32章...

技術 打磚塊:球磕到角角的碰撞與反彈

打磚塊可能是很多老師給初學程式的學生的第一個練習專案,雖然我以前沒經過這個階段,但還是來分享一下和打磚塊相關的演算法以及使用Typescript實作的Live...

技術 Day 33 極致改良 - Shell Sort

Shell Sort 是 Insertion Sort 的改良版,加入了間距 (Gap) 的概念將資料分成小區塊,將整組資料分組,每區塊用 Insertion...

技術 Day 32 你看我 CS - Counting Sort

Counting Sort 是以數字為基礎的排序演算法,其需要定義最大範圍值,作為排序用,整體算法較簡單且速度較快,缺點就是排序元素需要確定在最大範圍值內且需要...

鐵人賽 自我挑戰組 DAY 30
30天演算法解題 系列 第 30 篇

技術 Day 30:four number sum

problem 輸入為一陣列及一整數 target,陣列不為空陣列,且元素不重複。如果陣列中有四個數字相加等於 target,以雙層陣列 (two-diment...

技術 Day 31 41分推 - Dynamic Programming

解決一個問題時,若此問題可以分解成多個重複性的子問題,且這些子問題的解答可以構成最終該問題的解答,則我們可以用 Dynamic Programming 的技巧,...

鐵人賽 自我挑戰組 DAY 29
30天演算法解題 系列 第 29 篇

技術 Day 29:invert binary tree

problem 輸入為一個二元樹,將它左右反轉後回傳。 二元樹如下結構,每一個 BinaryTree 節點有一個整數值 value,左子節點 left,右子節點...

鐵人賽 自我挑戰組 DAY 28
30天演算法解題 系列 第 28 篇

技術 Day 28:node depths

problem 輸入為一個二元樹,如果一個節點的深度代表節點到根節點的距離,回傳二元樹中所有節點的深度總和。 二元樹如下結構,每一個 BinaryTree 節點...

鐵人賽 自我挑戰組 DAY 27
30天演算法解題 系列 第 27 篇

技術 Day 27:branch sums

problem 輸入為一個二元樹,以陣列回傳從最左到最右的樹枝總和。 二元樹是每個節點最多只有兩個分支的樹結構,樹枝 (branch) 指的是從根節點到任意葉節...

鐵人賽 自我挑戰組 DAY 26
30天演算法解題 系列 第 26 篇

技術 Day 26:array of products

problem 輸入為一陣列,陣列不為空且元素皆為整數。輸出一個長度相同的新陣列,其中每個位置 i 為輸入陣列 i 位置以外的元素乘積。 sample inpu...

鐵人賽 自我挑戰組 DAY 25
30天演算法解題 系列 第 25 篇

技術 Day 25:group anagrams

problem 輸入為一陣列,其中元素為字串,將字串以 anagram (易位構詞) 進行分組,最終以雙層陣列的結構輸出。易位構詞指的是同樣字母以不同順序排列出...

鐵人賽 自我挑戰組 DAY 24
30天演算法解題 系列 第 24 篇

技術 Day 24:longest peak

problem 輸入為一個元素皆為整數的陣列,回傳陣列中最長的山 (peak) 的長度。山是指相鄰的元素嚴格遞增到一個值最大的元素,再嚴格遞減的情況。也就是一個...

鐵人賽 自我挑戰組 DAY 23
30天演算法解題 系列 第 23 篇

技術 Day 23:longest palindromic substring

problem 輸入為一字串,回傳字串中最長的回文 (palindrome)。回文是指前到後、後到前寫法一樣的字串,只有一個字元的字串也算是回文。可以假設輸入字...

鐵人賽 Software Development DAY 24

技術 Day 23 極速解題 - Tree Sort

Tree Sort 簡而言之就是使用 Tree 結構來排序資料,建議先看資料結構篇章中的 Binary Search Tree 和 Tree Traversal...

鐵人賽 Software Development DAY 23

技術 Day 22 這篇若...不看...財哥也...感嘆... - Tree Traversal

由於樹狀結構並不像 Lined List 或陣列那樣是線狀的,故需要遍歷整個樹狀結構是很複雜的,而且有多種方式。 大致上分為以下兩種: Breadth-fir...

鐵人賽 自我挑戰組 DAY 22
30天演算法解題 系列 第 22 篇

技術 Day 22:search in sorted matrix

problem 輸入為一個 m * n 的雙層陣列和一個目標整數 target。陣列中的元素皆不重複,且每一列和每一欄都由小到大排序。如果 target 有在陣...

鐵人賽 自我挑戰組 DAY 21
30天演算法解題 系列 第 21 篇

技術 Day 21:product sum

problem 輸入為一個不為空的陣列,元素為整數或陣列,內層的陣列中也可能包含整數或陣列...以此類推。回傳陣列的 '商品總和',每一個陣列的商品總和代表元素...

鐵人賽 Software Development DAY 21

技術 Day 20 你會分類你要先講 - Bucket Sort

Bucket Sort 和之前的 Radix Sort 有點類似,建立幾個桶子並將資料丟進去排序。而 Bucket Sort 是取區間,例如 1 號桶子裝 0...

鐵人賽 自我挑戰組 DAY 20
30天演算法解題 系列 第 20 篇

技術 Day 20:find three largest numbers

problem 輸入為一個陣列 array,長度至少為 3,元素皆為整數。在不排序 array 的情況下,回傳一個有序陣列,其中包含 array 中最大的三個數...

鐵人賽 Software Development DAY 20

技術 Day 19 排序新理解 - Radix Sort

在這篇之前的排序法都可以用在任何可以比較的資料上,例如一個含有帳戶資料的陣列,按照每個帳戶的 ID 、更新時間、名字、帳戶餘額等等來排序。但 Radix Sor...

鐵人賽 自我挑戰組 DAY 19
30天演算法解題 系列 第 19 篇

技術 Day 19:shifted binary search

problem 輸入為一個陣列和一個整數 target。陣列有排序,元素為不重複的整數,但是所有的元素往左或往右 '移位' 了一個或多個位置,例如陣列 [1,...

鐵人賽 自我挑戰組 DAY 18
30天演算法解題 系列 第 18 篇

技術 Day 18:binary search

problem 輸入為一個元素為整數的有序陣列和一個整數 target,以二元搜尋檢查 target 是否在陣列中,有則回傳索引值,否則回傳 -1。 sampl...

鐵人賽 自我挑戰組 DAY 17
30天演算法解題 系列 第 17 篇

技術 Day 17:generate document

problem 輸入為兩個字串 characters 和 document,一個包含可利用的字元,另一個代表要產生的文件。回傳是否可以以可用字元產生文件。 只有...

鐵人賽 自我挑戰組 DAY 16
30天演算法解題 系列 第 16 篇

技術 Day 16:class photo

problem 題目的情境是,要為一個班級拍合照,全班人數必為偶數 (代表至少兩個人),一半的人穿紅衣服,另一半的人穿藍衣服。將全部的人排成兩橫排拍照,規則是:...

鐵人賽 Software Development DAY 19

技術 Day 18 快還要更快 - Quick Sort

Quick Sort 使用基準值 (pivot) 比對排序,並透過 Recursion 的技巧,不斷將每個元素放到正確的位置上。 第一步是從陣列中取出一個數字當...