iT邦幫忙

演算法相關文章
共有 302 則文章
鐵人賽 自我挑戰組 DAY 16
30天演算法解題 系列 第 16

技術 Day 16:class photo

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

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

技術 Day 10:spiral traverse

problem 輸入為一個長寬為 m * n (m 可以等於 n) 的雙層陣列,將其中所有的元素以螺旋的順序放入另一陣列回傳。 這裡的螺旋順序指的是從雙層陣列的...

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

技術 Day 03:three number sum

昨天寫到 two number sum 的兩種解法,一種使用兩層迴圈,時間為 O(n^2);另一種使用 hash table,時間為 O(n)。這裡先寫第三種解...

鐵人賽 自我挑戰組 DAY 25

技術 Day 25 | 演算法:排序 ( Sorting )

排序是電腦很常用到的演算法也是很經典的演算法種類,排序相關的演算法如下: ▌選擇排序法(Selection Sort) 算是比較簡單的排序演算法。會在「未排序...

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

技術 Day 26:array of products

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

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

技術 Day 23:longest palindromic substring

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

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

技術 Day 30:four number sum

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

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

技術 Day 08:move element to end

problem 輸入為一個元素皆為整數的陣列,以及一個整數 k,將所有陣列中為 k 的元素移動到末尾,並回傳陣列。題目要求原地進行,也就是需直接操作輸入陣列。其...

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

技術 Day 07:smallest difference

problem 輸入為兩個不為空、元素皆為整數的陣列,回傳相差最小的一組數字 [a, b],其中 a 來自第一個陣列,b 來自第二個陣列。可以確定只會有一組解。...

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

技術 Day 15:minimum waiting time

problem 輸入為一陣列,陣列不為空陣列且元素皆為正整數。每個元素代表一個任務的執行時間,一次只能執行一個任務,但順序可以換。 若每個任務的等待時間代表執行...

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

技術 Day 29:invert binary tree

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

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

技術 Day 13:Caesar cipher encryptor

problem 輸入為一個正整數 k,以及一個字串,字串不為空且其中字元都是小寫英文字母。將字串中每個字元在字母表中移動 k 個位置,回傳得到的新字串。 字元移...

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

技術 Day 04:validate subsequence

problem 輸入為兩個陣列,皆不為空陣列且元素皆為整數,回傳第二個陣列是否為第一個陣列的子序列 (subsequence)。 sample input:ar...

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

技術 Day 27:branch sums

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

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

技術 Day 12:first non-repeating character

problem 輸入為一個字串,其中字元都是小寫英文字母,回傳字串中第一個只出現一次的字元的索引值。如果所有字元都重複出現,則回傳 -1。 sample inp...

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

技術 Day 05:non-constructible change

problem 輸入為一個元素皆為正整數的陣列,元素可能重複,假設每個數字代表一個硬幣的面額,回傳這些硬幣無法加總組合出的最小金額。例如陣列 [1, 2, 5]...

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

技術 Day 28:node depths

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

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

技術 Day 22:search in sorted matrix

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

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

技術 Day 20:find three largest numbers

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

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

技術 Day 19:shifted binary search

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

鐵人賽 自我挑戰組 DAY 9

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

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

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

技術 Day 06:tournament winner

problem 至少兩支隊伍進行錦標賽,其中每一隊都會跟其他所有的隊伍進行一對一比賽。每場比賽贏的加 3 分,輸的加 0 分,不會有平手的情況。累積總分最高的就...

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

技術 Day 18:binary search

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

鐵人賽 自我挑戰組 DAY 14

技術 Day14-[Grind 169 questions][Array] LeetCode 11、252、134

11. Container With Most Water 解題程式碼 var maxArea = function (height) { let left...

鐵人賽 自我挑戰組 DAY 6

技術 Day6-Dynamic Programming 動態規劃法

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

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

技術 Day 24:longest peak

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

鐵人賽 自我挑戰組 DAY 12

技術 Day12-[Grind 169 questions][Array] LeetCode 238、39、56

238. Product of Array Except Self 解題程式碼 var productExceptSelf = function (nums)...

鐵人賽 自我挑戰組 DAY 8

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

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

鐵人賽 自我挑戰組 DAY 10

技術 Day10-[30 Days of JavaScript] LeeCode 2705、2715、2722、2723

2705. Compact Object 解題程式碼 var compactObject = function (obj) { if (obj === nu...

鐵人賽 自我挑戰組 DAY 4

技術 Day4-Graph 圖

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