iT邦幫忙

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

技術 Day 8 BO5-5 - Recursion

Recursion 的定義是一個會呼叫自己的函式。 Recursion 技巧在很多地方都有用到,例如: JSON.stringify & JSON....

鐵人賽 Software Development DAY 8

技術 Day 7 BO5-4 - Divide and Conquer

將一組資料切分成兩組或多組資料,再用切分後的資料進行處理。此技巧能有效減少時間複雜度。 此技巧大量用於搜尋演算法內,以下用 二分搜尋法 (Binary Sear...

鐵人賽 Software Development DAY 7

技術 Day 6 BO5-3 - Sliding Window

Sliding Window 跟上篇 Multiple Pointers 類似,定義兩個指標,一個是 start,一個是 end。 像是: start...

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

技術 Day 07:smallest difference

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

鐵人賽 Software Development DAY 8

技術 Day 8. Stack-堆疊

講完了Array跟Linked list接下來我們來講Stack跟Queue吧d(`・∀・)b什麼是Stack勒,先舉一些日常生活中的例子,像是餐廳裡面洗好堆起...

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

技術 Day 06:tournament winner

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

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

技術 Day 05:non-constructible change

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

鐵人賽 Software Development DAY 7

技術 Day 7. Circular Linked List - 環狀鏈結 &Linked List 基本操作

昨天講了單向跟雙向鏈結,今天來講最後一個!!環狀鏈結ლ(́◕◞౪◟◕‵ლ)還有講一些Linked List 基本操作的pseudo code 環狀鏈結(Circ...

鐵人賽 Software Development DAY 6

技術 Day 5 BO5-2 - Multiple Pointers

Multiple Pointers 技巧是透過建立 pointer 變數代表目前指到哪個位置 (index)。使用兩個 pointer 代表目前查找的位置與範圍...

鐵人賽 Software Development DAY 11

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

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

鐵人賽 Software Development DAY 5

技術 Day 4 BO5-1 - Frequency Counter

Frequency Counter 是一種解題技巧,它使用物件的鍵值 (Key) 來記錄陣列或字串裡面特定值的出現次數。它可以避免一直遍歷資料,可以有效減少時間...

鐵人賽 Software Development DAY 3

技術 Day 2 哎呀這什麼水平 - 時間與空間複雜度

在 Day 1 我們講到的複雜度表示都是指時間複雜度,在輸入的參數越多越大的情況下,所要執行的步驟(執行所需花費的時間)的增長趨勢。 我們也可以使用 Big O...

鐵人賽 Software Development DAY 6

技術 Day 6. Linked List -鏈結串列

Linked List (鏈結串列)◝( ゚∀ ゚ )◟ 介紹完Array接下來來看Linked List,他們可以算是好兄弟常常會一起被提到呢!陣列是屬於靜態...

鐵人賽 Software Development DAY 5

技術 Day 5. Array之特殊矩陣存放

昨天講了利用array來儲存一維,二維,三維....到n維矩陣,今天繼續來用array,我們來儲存一些酷逼八的矩陣(♛‿♛) 下、上三角矩陣 下三角矩陣(Low...

鐵人賽 Software Development DAY 4

技術 Day 4. Array-陣列

陣列是什麼 陣列屬於一種靜態的資料結構,而且他會具有以下幾種特性: 需要使用一段連續的記憶體空間來儲存 用來儲存一群相同類型的資料 可以透過索引值快速存取想要...

鐵人賽 Software Development DAY 3

達標好文 技術 演算法比你想像的重要

如果是非本科系一個剛轉職沒幾年的超級菜鳥很多人應該是沒有任何DSA的任何一丁點基礎的或甚至是本科系的菜鳥但是大學教DSA的時候還沒意識到這個東西還蠻重要的所以根...

鐵人賽 Modern Web DAY 30

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

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

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

技術 Day 04:validate subsequence

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

鐵人賽 Modern Web DAY 28

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

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

鐵人賽 Modern Web DAY 27

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

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

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

技術 Day 03:three number sum

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

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

技術 Day 02:two number sum

problem 輸入為一陣列及一整數 target,如果陣列中有兩個數字 a, b 相加等於 target,回傳陣列 [a, b] (或 [b, a],順序都可...

鐵人賽 Modern Web DAY 26

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

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

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

技術 Day 01:開始解題之前

去年轉職期間第一次參加鐵人賽,寫了三十篇關於演算法的文章。但因為當時還在認識階段,文章比較多概念上的討論,很少程式碼實戰。也因為這樣,後來在找工作時碰到演算法白...

鐵人賽 Software Development DAY 3

技術 Day 3. Asymptotic Notations-漸進式符號

昨天我們提到了資料結構跟演算法的定義及他們之間的關係,我們也可以知道,對於同一個問題,我們可以使用很多不同種類的演算法來解決他,但要怎麼判斷哪種演算法比較好呢?...

鐵人賽 Software Development DAY 2

技術 Day 2. 資料結構是什麼?演算法又是誰(´◓Д◔`)?

資料結構(data structure) 在電腦科學中,資料結構是電腦中儲存、組織資料的方式,其實就是資料加上去定義一些資料之間的關係,像是要運用什麼樣的邏輯來...

鐵人賽 Modern Web DAY 18

技術 Trick 17: 綿延不絕的隨機地形是咋做出來的?

不管你喜不喜歡沙盒遊戲,都無法否認我的世界(Minecraft)、泰拉瑞亞(Terraria)這些屹立了十多年仍然立於頂端的遊戲類型有多麼吸引玩家。 類似的沙盒...

鐵人賽 Modern Web DAY 15

技術 Trick 14: 為什麼要寫自己的亂數產生器

今天的標題可能會讓人很困惑,明明JavaScript就提供了Math.random(),現成的亂數產生器為什麼放著不用,要自己瞎搞一個出來? 九成以上的遊戲都藉...

鐵人賽 Modern Web DAY 13

技術 Trick 12: 直男與硬漢的交點-兩條線段的碰撞問題

昨天我們學會了怎麼用內積檢測角色圓與彈道的碰撞,用這個方法可以完整搜集一個飛得很快的物件和遊戲中一般物件的碰撞事件。不過在一些較為少見的情況下,遊戲也可能需要知...

鐵人賽 Modern Web DAY 10

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

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