iT邦幫忙

資料結構與演算法相關文章
共有 268 則文章
鐵人賽 自我挑戰組 DAY 23

技術 Day23:Greedy Algorithm - 貪婪演算法

貪婪演算法(英語:greedy algorithm),又稱貪心演算法,是一種在每一步選擇中都採取在當前狀態下最好或最佳(即最有利)的選擇,從而希望導致結果是...

鐵人賽 自我挑戰組 DAY 23
一個月的演算法挑戰 系列 第 23

技術 Day23:安全性和演算法-混成密碼系統(Hybrid Cryptosystem)

前言 前面兩天已經提到共同金鑰密碼系統以及公開金鑰密碼系統,今天要來探討,結合兩種密碼系統,並且彌補其缺點的密碼系統:混成密碼系統(Hybrid Cryptos...

鐵人賽 Software Development DAY 8

技術 【在廚房想30天的演算法】Day 08 資料結構:堆疊 Stack

Aloha~!我是少女人妻 Uerica!有天地方角頭米飯,蒸籠幫的包子、饅頭、肉粽起了爭執,米飯米口眾多出手又兇狠,很快打得包子饅頭滿地找牙,害怕的肉粽被逼到...

鐵人賽 Software Development DAY 8

技術 Day 8:506. Relative Ranks

今日題目 題目連結:506. Relative Ranks 題目主題:Array, Sorting, Heap(Priority Queue) 前幾天結束了St...

鐵人賽 Software Development DAY 7

技術 【在廚房想30天的演算法】Day 07 資料結構:陣列 Array

Aloha~又是我少女人妻 Uerica ! 中秋節過後就是秋天了,秋高氣爽是最適合旅遊的日子了,可惜連假已過而且還要寫鐵人賽文章呢~哈哈哈哈哈哈哈5555.....

鐵人賽 自我挑戰組 DAY 22

技術 Day22:[排序演算法]Merge sort - 合併排序法

Merge Sort採用分治法(Divide and Conquer)的方式來處理排序的問題,簡單介紹一下分治法執行的步驟如下 Divide:先將大問題不斷切...

鐵人賽 自我挑戰組 DAY 22
一個月的演算法挑戰 系列 第 22

技術 Day22:安全性和演算法-公開金鑰密碼系統(Public-key Cryptosystem)

前言 前一天有提到共用金鑰密碼系統(Shared-key CryptoSystem),又稱為「對稱密鑰演算法」(Symmetric-key algorithm)...

鐵人賽 Software Development DAY 6

技術 【在廚房想30天的演算法】Day 06 資料結構:連結串列 Linked List

Aloha!又是我少女人妻 Uerica ,今天中秋節大家吃肉了嗎!傳說中后羿的狗狗偷吃了嫦娥吃剩的靈藥,就跟嫦娥一樣一起飛到月亮上,然後把嫦娥跟月亮都吃掉了!...

鐵人賽 自我挑戰組 DAY 21
一個月的演算法挑戰 系列 第 21

技術 Day21:安全性和演算法-共用金鑰密碼系統(shared-key crypto system)

前言 前一天我們有稍微提到安全性演算法的其中一個,也就是今天的主題「共同金鑰密碼系統」(shared-key crypto system),其實筆者對於密碼學一...

鐵人賽 Software Development DAY 7

技術 Day 7:225. Implement Stack using Queues

今日題目 題目連結:225. Implement Stack using Queues 題目主題:Stack, Design, Queue 瞭解完Stack跟Q...

鐵人賽 自我挑戰組 DAY 21

技術 Day21:[排序演算法]Heap Sort - 堆積排序法

heap sort的原理是採用max heap這種資料結構來做排序,max heap是一種binary tree,每個節點都會比自己的子節點還大,因此根節點會是...

鐵人賽 自我挑戰組 DAY 20
一個月的演算法挑戰 系列 第 20

技術 Day20:安全性和演算法-雜湊函數(hash function)

安全性與演算法 在電腦科學的領域裡,每一刻都有數以萬計的資料在進行傳輸,在傳輸的過程中,是真的安全嗎?相信每個人都有遇過詐騙電話,或是資料外洩,是怎麼樣的過程造...

鐵人賽 自我挑戰組 DAY 5

技術 【Day 05】LeetCode:Plus One ( 用 JavaScript 學演算法 )

我們繼續透過 LeetCode #66 Plus One 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個正整數組成,且從大到小排序好的陣...

鐵人賽 Software Development DAY 5

技術 【在廚房想30天的演算法】Day 05 資料結構之冰箱整理術

Aloha!又是我少女人妻 Uerica!昨晚跟朋友聊天突然發現,如果沒有最終目標或目標不夠明確,那過程中受的每一點日曬雨淋都猶如被鞭刑拷打一樣痛苦,可是如果能...

鐵人賽 自我挑戰組 DAY 20

技術 Day20:[排序演算法]Selection Sort - 選擇排序法

在了解快速排序法的概念之前要先理解partition演算法,不過單用文字敘述還是蠻抽象的,所以搭配示意圖來做說明,假如現在有個陣列[2, 6, 3, 9, 1,...

鐵人賽 Software Development DAY 6

技術 Day 6:232. Implement Queue using Stacks

今日題目 題目連結:232. Implement Queue using Stacks題目主題:Stack, Design, Queue 此題目主要是來了解Qu...

鐵人賽 自我挑戰組 DAY 4

技術 【Day 04】LeetCode:Fizz Buzz ( 用 JavaScript 學演算法 )

我們透過 LeetCode #412 Fizz Buzz 來實際感受解決問題的過程 ( 題目連結 ) 一、理解題目 輸入:一個正整數 從 1 到 n,依序判斷...

鐵人賽 Software Development DAY 4

技術 【在廚房想30天的演算法】Day 04 來淺談一下空間複雜度

Aloha!我是中秋節沒有肉烤的少女人妻 Uerica!今年連假沒什麼跟朋友相聚的機會,還收到一堆月餅,根本在考驗意志力。半夜想偷吃月餅的時候我都會 googl...

鐵人賽 自我挑戰組 DAY 19

技術 Day19:[排序演算法]Bubble Sort - 氣泡排序法

bubble sort的概念就是像泡泡一樣 ,越大的數字會漸漸的往右邊浮 比較相鄰的元素 ,兩兩比大小, 如果前面的數字大於後面的數字就交換順序,一路把最...

鐵人賽 Software Development DAY 5

技術 Day 5:20. Valid Parentheses

今日題目 題目連結:20. Valid Parentheses題目主題:String, Stack 玩了幾題排序後,接下來會分享兩種重要的資料結構Stack &...

鐵人賽 自我挑戰組 DAY 19
一個月的演算法挑戰 系列 第 19

技術 Day19:鏈接串列(Linked List)

鏈接串列(Linked List) 鏈接串列是一種線性表,使用Pointer串接資料,好處是找到目標位置後,可以有效率的插入或刪除元素,陣列不適合在中間位置插入...

鐵人賽 Software Development DAY 3

技術 【在廚房想30天的演算法】Day 03 那個時間複雜度會讓人生變複雜嗎?

Aloha!又是我少女人妻Uerica!話說這次有很多以前的朋友同學們一起參加鐵人賽,,不但可以一起加油打氣,因為每天都會去收看大家的文章,真是收穫滿滿~啊。...

鐵人賽 自我挑戰組 DAY 3

技術 【Day 03】如何評估演算法的效率? Big O 與時間複雜度

一、如何判斷演算法的效能 ? 當同樣的問題,可以用不一樣的演算法來解決時,要如何判斷哪個演算法比較好 ?可以使用以下兩個評量指標: 花的時間少,所需步驟少 (...

鐵人賽 自我挑戰組 DAY 18
一個月的演算法挑戰 系列 第 18

技術 Day18:圖形搜尋-戴克斯特拉演算法(Dijkstra's algorithm)

貪婪(Greedy)演算法 貪婪演算法是考慮局部最佳解,在子結構中解決問題是相當有利的,但放入整體問題中,不一定會是最佳解。 貪婪演算法與動態規劃的不同在於它...

鐵人賽 自我挑戰組 DAY 18

技術 Day18:[排序演算法]Selection Sort - 選擇排序法

其實插入排序法就很像平時我們在玩撲克牌時整理牌組的行為,將撲克牌依照大小插入對應的位置,插入排序法的流程是從第2個位置開始與左邊的數字(位置1)比較,然後就依循...

鐵人賽 Software Development DAY 4

技術 Day 4:88. Merge Sorted Array

今日題目 題目連結:88. Merge Sorted Array題目主題:Array、Two Pointer、Sorting 今天要說說另一種排序法,這次選的題...

鐵人賽 自我挑戰組 DAY 2

技術 【Day 02】認識演算法 Algorithm ( 使用 JavaScript )

一、什麼是演算法 ( Algorithm ) ? 演算法是一組 step by step 用來解決問題、完成任務的指令,它的定義: 在有限時間內 在有限步驟內...

鐵人賽 自我挑戰組 DAY 17

技術 Day17:[排序演算法]Selection Sort - 選擇排序法

從今天開始要來理解排序演算法了!簡單來說就是經過一連串的步驟將數字由小排到大或是由大排到小的演算法,下圖列出幾種常見的排序演算法,像是插入排序法、氣泡排序法、合...

鐵人賽 自我挑戰組 DAY 17
一個月的演算法挑戰 系列 第 17

技術 Day17:圖形搜尋-貝爾曼-福特演算法(Bellman-Ford algorithm)

最短路徑演算法 最短路徑是在賦予edges權重的「加權圖形」裡,指定「起點」和「終點」,求出起點到終點之間,權重總和最小的路徑。求取最短路徑時,通常edges的...

鐵人賽 自我挑戰組 DAY 1

技術 【Day 01】認識資料結構 Data Structure ( 使用 JavaScript )

一、什麼是資料結構 ? 當我們撰寫程式時,會宣告變數來存放資料,這些資料會儲存在記憶體中,在我們需要時可以拿出來使用。這邊我們可以思考兩點: 要儲存的資料內容...