iT邦幫忙

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

技術 Day 7 不數迴圈就沒辦法分析了?技豈是如此不便之物 其一

接下來幾篇要介紹時間複雜度各種的分析技巧,不過因為個人能力有限,因此這裡開始會大量參考網路資源,尤其是 AA 競程在 YouTube 的時間複雜度教學影片。...

鐵人賽 自我挑戰組 DAY 7

技術 Day7-Heap 堆積

Heap 是一種特別的完全二元樹(Complete Binary Tree),在一顆二元樹中,若除最後一層外的其他層都是充滿節點的,並且最後一層要麼是滿的,要麼...

鐵人賽 自我挑戰組 DAY 6

技術 Day 6 我說那個讀者們啊,剛才寫程式的時候,你有在分析吧?

一個理論的成立,通常也會帶動相關技術的進步。所以我們今天將利用昨天學的漸進符號,反過來改進我們實際在估算複雜度的流程。 實際的複雜度估計 昨天在最後提到了兩個問...

鐵人賽 自我挑戰組 DAY 5

技術 Day 5 漸進符號什麼的最討厭了!

漸進符號 其實如果有看完前四天的文章並有試著跟著練習的話,你對時間複雜度應該有基本的感覺了就像折斷HB鉛筆會發出啪的一聲一樣理所當然 不過接下來說的漸進符號可以...

鐵人賽 自我挑戰組 DAY 4

技術 Day 4 天上的階乘不說話,地上的 log 想長大

量級對實際程式的影響 看完昨天一大堆的數學後,我自己都寫得有點頭昏眼花了XD,但是理論也不能脫離現實,因此本段會實際用程式展示一下不同量級對於時間帶來的影響!...

鐵人賽 自我挑戰組 DAY 3

技術 Day 3 為什麼你(算極限)會這麼熟練啊!

量級與複雜度函數 延續昨天,我們發現就連步驟數都不必估計得很精確,因此我們真正需要的是一個能找到最痛點的估計方法! 不過在此之前,先讓我介紹一個例子:你 14...

鐵人賽 自我挑戰組 DAY 2

技術 Day 2 你對速度一無所知

延續自昨天,今天要來探討分析解決問題方法的效率的方法! 程式好壞評估 這邊先請大家思考一下:要怎麼精準評估一個程式寫的好不好呢? 一般來說,一個程式 跑得快...

鐵人賽 Software Development DAY 7
Easy to learn Algorithm 系列 第 7

技術 「Day7」資料結構-圖形&雜湊

昨天的樹狀結構是描述節點與節點之間,而圖形結構是兩個頂點之間是否相連。在圖形中連接兩點的邊若填上加權值,這類就稱為網路。 圖形簡介 圖形理論最早是18世紀的尤拉...

鐵人賽 自我挑戰組 DAY 1

技術 Day 1 我自己揭開序幕的故事

序言 —— 從不完美中尋找完美 大家好呀!我是暗魂駭客,接下來參賽的30天請各位多多指教!希望我能順利完賽。 我會選擇參賽的理由主要是有兩個:其一是想鍛鍊自己的...

鐵人賽 Software Development DAY 3
Easy to learn Algorithm 系列 第 3

技術 「Day3」最常見演算法II

常見演算法簡介二 今天介紹剩下常見的演算法~ 動態規劃法(Dynamic Programming Algorithm) 動態規劃法主要是如果一個問提答案與子問題...

技術 Day 30 太無情了 - Dijkstra's Algorithm

此演算法是由一位叫 Edsger Dijkstra 的荷蘭工程師所發明,他在電腦科學領域貢獻了許多奠定目前網際網路、電腦科學與數位服務等等的基礎。 在學習 D...

鐵人賽 Software Development DAY 30

技術 Day 29 走囉~高歌離席~ - Graph Traversal

當要取得、更新、檢查 Graph 裡所有的節點時就會需要用到 Traversal 方法,常見的使用場景為點對點的網際網路、網站爬蟲、導航、迷宮問題或遊戲類的 A...

鐵人賽 Software Development DAY 29

技術 Day 28 又肉又痛 - Graph

簡言之, Graph 就是很多個節點與節點之間的連線所組成的,前幾天提到的 Three 也算是 Graph 的一種 , Graph 主要有以下幾點特色: Gr...

鐵人賽 Software Development DAY 28

技術 Day 27 迷因新寵兒 - Hash Table

From Medium Hash Table 是用來儲存鍵值對的資料 (key-value pairs)。 而 Hash Table 在找特定資料與新增刪除...

鐵人賽 Software Development DAY 27

技術 Day 26 展現解題 GAP - Heap Sort

Heap Sort 使用 Binary Heap 處理資料排序,也可視為 Selection Sort 的改良版。 兩者一樣都是將資料分成兩區,一區為排序好的,...

鐵人賽 Software Development DAY 30

技術 總整理&結論

哇~終於來到最後一天了,其實在這幾個禮拜裡面,我禮拜六的文章都是禮拜五晚上熬夜寫出來的,因為我六日白天都常常有事情,所以我都必須半夜就先搞定,不過在這30天自己...

鐵人賽 Software Development DAY 29

技術 解題-Dynamic Programming

今天我們來做大家比較害怕的DP問題,我個人做下來發現有幾個步驟可以放我們去比較簡易的解決一個DP問題,大雞可以參考看看。 看看在最一開始你能做甚麼? 有沒有B...

鐵人賽 Software Development DAY 28

技術 解題-Greedy

Greedy的題目我認為是最難寫的,原因是我們如果沒有經過證明,會很難知道這是可行的答案,不過這邊還是找了幾題想讓大家感受一下Greedy演算法的思想。另外,撇...

鐵人賽 Software Development DAY 27

技術 解題-Binary Search

今天我們來看看Binary Search類型的題目吧!還記得當初我們提到Binary Search的時候,會覺得這個演算法也不是特別的難,確實如果說單純搜尋一個...

鐵人賽 Software Development DAY 26

技術 解題–DFS/ BFS

今天我們來看看DFS跟BFS的題目吧! BFS跟DFS的題目有幾件事情要注意一下,這也是我做題下來發現的小技巧。 很多時候DFS跟BFS都是可以解決問題的。...

鐵人賽 Software Development DAY 25

技術 解題-Tree

樹的題目我個人認為也相對簡單的,而且非常非常適合用來練習遞迴思想,有以下的技巧讓大家參考看看。 樹的題目大概7成以上都是用遞迴去思考,要思考的點通常有兩個,分別...

鐵人賽 Software Development DAY 24

技術 解題-Linked List

Linked List的題目相對單純一點,大概就一個技巧就是Two Pointer,因為我們只能單向的尋訪鏈結串列,所以時間複雜度通常都是O(n)。 Linke...

鐵人賽 Software Development DAY 23

技術 解題-Array

總算來到我們寫題目的環節了,首先第一天我們來學習Array類型的題目吧! Array技巧整理 Array類型的題目在我的經驗裡有幾個小技巧,大家可以參考看看。...

鐵人賽 Software Development DAY 15

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

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

鐵人賽 Software Development DAY 14

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

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

鐵人賽 Software Development DAY 22

技術 解題常用到的小技巧和淺談空間複雜度

在我們開始進入解題之前這邊有一些解題的小技巧想跟大家分享,對了~這些方法是Python內建的Library,所以其實寫法上比較固定,沒有甚麼特別的。如果讀者用的...

鐵人賽 Software Development DAY 13

技術 Day 13. Binary tree-二元樹

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

鐵人賽 Software Development DAY 21

技術 演算法-Dynamic Programming

終於來到大家所最害怕的Dynamic Programming也就是中文所說的「動態規劃」,希望各位讀者到這邊能依舊繼續堅持下去啦,我會盡力用最簡單的方式講述給大...

鐵人賽 Software Development DAY 20

技術 演算法-BFS

BFS全名Breadth-first search中文叫「廣度優先搜尋」,我個人覺得比DFS還要好理解很多,也因為他是「廣度」優先的原因,感覺就像「擴散」開來的...

鐵人賽 Software Development DAY 15

技術 Day 14 左右開通 - Doubly Linked List

Singly Linked List 與 Doubly Linked List 差別在 Node 的指標一個只有下一個節點,另個有存上下兩個節點。 Doubly...