iT邦幫忙

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

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

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

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

技術 Day 21:product sum

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

鐵人賽 Software Development DAY 20

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

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

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

技術 Day 20:find three largest numbers

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

鐵人賽 Software Development DAY 19

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

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

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

技術 Day 19:shifted binary search

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

鐵人賽 Software Development DAY 18

技術 Day 17 切出去合進來 升職發大財 - Merge Sort

Merge Sort 是一種透過切分資料再一一合併的排序演算法。 Merge Sort 有使用到 Divide and Conquer 與 Recursion...

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

技術 Day 18:binary search

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

鐵人賽 Modern Web DAY 30

技術 Trick 29: 電競天梯的積分怎麼算才不會糊掉

同學們是否玩過有天梯排名的電競遊戲?有這種賽制的對戰遊戲中,來自四面八方的玩家都可以隨意找對手玩個兩場,並在賽後增減天梯積分,積分越高,越能受到來自其他玩家們景...

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

技術 Day 17:generate document

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

鐵人賽 Software Development DAY 15

技術 Day 15. Binary Tree Traversal-二元樹走訪

昨天看了二元樹的表示方式,今天來看看他的走訪!! 二元樹走訪(Binary Tree Traversal) 我 定義: 拜訪Binary tree 中每個Nod...

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

技術 Day 16:class photo

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

鐵人賽 Modern Web DAY 28

技術 Trick 27: 承先啟後的路徑搜尋-A*演算法

前兩天分別介紹了兩種路徑搜尋演算法,《戴克斯特拉》與《貪婪演算法》。他們尋路的過程大同小異,但演算的結果卻大相徑庭。 復習 這兩種演算法都會將觸及的所有格子,分...

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

技術 Day 15:minimum waiting time

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

鐵人賽 Software Development DAY 14

技術 Day 14. Binary Tree之表示方式

大家會不會也常常有那種被時間追著跑的感覺呢(´A`。)最近的我時常有這種感覺,越是這種時候好像越想逃避,但不可以!我們一起加油吧,不管怎麼樣還是要持續努力持續進...

鐵人賽 Modern Web DAY 27

技術 Trick 26: 狼性的路徑搜尋-貪婪演算法

昨天介紹了一個絕對最佳路徑搜尋法,《戴克斯特拉演算法》,但缺點是效率低,不適合在繁忙的遊戲程式裏運作。於是我們今天要把昨天的演算法稍稍地改一點,變成超高效率的貪...

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

技術 Day 14:run-length encoding

problem 輸入為一個不為空的字串,回傳該字串經過變動長度編碼 (run-length encoding) 的結果。 sample input:string...

鐵人賽 Software Development DAY 13

技術 Day 13. Binary tree-二元樹

昨天介紹了很多跟樹狀結構有關的名詞,今天開始介紹不同種類的樹吧ヽ(✿゚▽゚)ノ 二元樹(Binary Tree) 定義 可以為空集合 若不為空,則有root及...

鐵人賽 Software Development DAY 13

技術 Day 12 我的回合,抽卡!!! - Insertion Sort

從第二個元素開始,往前比對,如果比前一個元素小,則交換位置,以此類推。 以 [30, 5, 1, 31, 10, 9, 2, 3, 4, 8, 7, 6] 來說...

鐵人賽 Modern Web DAY 26

技術 Trick 25: 路徑搜尋的鼻祖-戴克斯特拉

一講到遊戲中的路徑搜尋,通常 A* 這個字眼馬上就會浮起來,因為A*演算法就是目前開發遊戲最熱門的路徑搜尋方式。不過同學們先別鼓噪,我們一步一步來,先從路徑搜尋...

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

技術 Day 13:Caesar cipher encryptor

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

鐵人賽 Software Development DAY 12

技術 Day 11 選我選我選我選我 - Selection Sort

Selection Sort 實作上是遍歷一次陣列,找出最小值,並將最小值與陣列的第一個值交換,以此類推,再遍歷一次陣列 (先前排序好的位置可以略過) 找出最小...

鐵人賽 Software Development DAY 12

技術 Day 12. Tree-樹 ┏((= ̄(エ) ̄=))┛

一看到樹大家會想到甚麼勒,我會想到野餐,好想出去玩歐歐歐☆^(o´Ф∇Ф)o沒想到資料結構裡面也有樹和森林吧,他其實像是模擬現實生活中的樹幹、樹枝和葉子的樣子那...

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

技術 Day 12:first non-repeating character

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

鐵人賽 Software Development DAY 11

技術 Day 11. Queue的製作與種類

昨天介紹了用array的方式做Queue,今天來介紹用linked list製作! [法二]用linked list製作 一、single linked lis...

鐵人賽 Software Development DAY 11

技術 Day 10 還敢下來啊 - Bubble Sort

一種排序資料的方式,實務上不太常使用,除了某些特定情境。相對於其他排序方式,Bubble Sort 效能較差。 儘管如此,作為基礎中的基礎,最好還是要理解其概念...

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

技術 Day 11:palindrome check

problem 輸入為一個不為空的字串,回傳該字串是否為回文 (palindrome)。所謂回文是指從前到後和從後到前寫法一樣的字串,只有一個字元的字串也是回文...

鐵人賽 Software Development DAY 10

技術 Day 10. Queue-佇列

歐歐終於結束Stack的部分了,接下來換來介紹Queue~我們一樣先來舉一些生活中的例子,像是我們平常要買東西、搭車等等都需要排隊,先排到隊伍中的人會先獲得購買...

鐵人賽 Software Development DAY 10

技術 Day 9 絕命雙排 - Linear Search & Binary Search

Linear Search Linear Search 非常常見,甚至在學迴圈時就已經用過了。以下直接給範例練習! Practice - Linear Sear...

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

技術 Day 10:spiral traverse

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