iT邦幫忙

演算法相關文章
共有 330 則文章

技術 洛谷 P2440 木材加工

筆記:【演算法新手村】[初階]筆記03 - 二分練習題 題目 木材廠有 n 根原木,現在想把這些木頭切割成 k 段長度均為 l 的小段木頭(木頭有可能有剩餘)...

技術 UVA 108 - Maximum Sum

筆記:【演算法新手村】[初階]筆記05 - 前綴和(二維) 題目翻譯 輸入 (Input)輸入包含一個 N×N 的整數陣列。 第一行是一個正整數 N,代表這...

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

技術 Day 04:validate subsequence

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

鐵人賽 自我挑戰組 DAY 8

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

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

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

技術 Day 16:class photo

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

鐵人賽 自我挑戰組 DAY 6

技術 Day6-Dynamic Programming 動態規劃法

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

技術 洛谷 P3397 地毯

筆記:【演算法新手村】[初階]筆記06 - 差分(二維) 題目 在 n × n 的格子上有 m 個地毯。給出這些地毯的信息,問每個點被多少個地毯覆蓋。 I...

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

技術 Day 08:move element to end

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

鐵人賽 自我挑戰組 DAY 14

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

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

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

技術 Day 13:Caesar cipher encryptor

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

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

技術 Day 15:minimum waiting time

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

技術 【演算法新手村】[初階]筆記06 - 差分(二維)

上一篇:【演算法新手村】[初階]筆記06 - 差分(一維) 同樣引入一個問題,給定一個 N × M 的矩陣,有 Q 次操作,每次將左上 (x1, y1) 到右...

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

技術 Day 20:find three largest numbers

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

技術 LeetCode 1094. Car Pooling

筆記:【演算法新手村】[初階]筆記06 - 差分(一維) 題目翻譯 有一輛車,車內共有 capacity 個空座位。這輛車只會向東行駛(也就是說,它不能掉頭向...

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

技術 Day 27:branch sums

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

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

技術 Day 28:node depths

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

技術 LeetCode 1109. Corporate Flight Bookings

筆記:【演算法新手村】[初階]筆記06 - 差分(一維) 題目翻譯 有n 個航班,編號從 1 到 n。給定一個預訂紀錄陣列 bookings,其中 booki...

鐵人賽 自我挑戰組 DAY 10

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

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

鐵人賽 自我挑戰組 DAY 13

技術 Day13-[Grind 169 questions][Array] LeetCode 169、75、217

169. Majority Element 解題程式碼 var majorityElement = function (nums) { let majori...

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

技術 Day 05:non-constructible change

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

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

技術 Day 06:tournament winner

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

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

技術 Day 24:longest peak

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

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

技術 Day 12:first non-repeating character

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

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

技術 Day 18:binary search

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

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

技術 Day 19:shifted binary search

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

鐵人賽 自我挑戰組 DAY 11

技術 Day11-[Grind 169 questions][Array] LeetCode 121、57、15

121. Best Time to Buy and Sell Stock 解題程式碼 var maxProfit = function (prices) {...

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

技術 Day 22:search in sorted matrix

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

技術 LeetCode 2536. Increment Submatrices by One

筆記:【演算法新手村】[初階]筆記06 - 差分(二維) 題目翻譯 給定一個正整數 n,代表一個初始全為 0、大小為 n × n 的二維矩陣 mat(索引從...

鐵人賽 Software Development DAY 8

技術 Day 8 — 貪心演算法(Greedy)

一、學習目標 了解什麼是「局部最優導向全局最優」的貪心思想,以及何時可用、何時不可用。 學會兩個最常見的貪心套路:區間排程(按結束時間排序)、短工優先以最小化...

鐵人賽 Software Development DAY 7

技術 Day 7:雙指標 Two Pointers 技巧

一、學習目標 掌握雙指針(Two Pointers)技巧的兩大變形: 對撞型雙指針(Two-end) 滑動視窗型雙指針(Sliding Window)...