iT邦幫忙

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

技術 Day18-[Grind 169 questions][String] LeetCode 125、242、3

125. Valid Palindrome 解題程式碼 var isPalindrome = function (s) { const loweCaseSt...

鐵人賽 自我挑戰組 DAY 17

技術 Day 17 遞獄樂 其二

遞迴是大事化小,要記得小事化無by 吳邦一 AP325 糖 + 香料 + 美好事物(圖論 and 遞迴) = 超多演算法 遞迴說到底其實只是實現演算法的「技...

鐵人賽 自我挑戰組 DAY 17

技術 Day17-[Grind 169 questions][Array] LeetCode 977、16、435

977. Squares of a Sorted Array 解題程式碼 var sortedSquares = function (nums) { con...

鐵人賽 自我挑戰組 DAY 16

技術 Day 16 遞獄樂 其一

遞迴是大事化小,要記得小事化無by 吳邦一 AP325 遞迴的概念 數學裡的遞迴 若一個函數直接或間接地用自己定義自己,它就是一個遞迴函數。 有很多數列或函...

鐵人賽 自我挑戰組 DAY 16

技術 Day16-[Grind 169 questions][Array] LeetCode 560、283、253

560. Subarray Sum Equals K 解題程式碼 var subarraySum = function (nums, k) { const...

鐵人賽 自我挑戰組 DAY 15

技術 Day 15 現出せよ!Explosion! 其三

枚舉算法是一種基本但極為強大的演算法策略,主要用於遍歷所有可能的解空間以找到最佳或符合特定條件的解。這種方法在第一眼看來可能效率不高,但實際上,透過一些巧妙的設...

鐵人賽 自我挑戰組 DAY 15

技術 Day15-[Grind 169 questions][Array] LeetCode 128、189、525

128. Longest Consecutive Sequence 解題程式碼 var longestConsecutive = function (nums)...

鐵人賽 自我挑戰組 DAY 14

技術 Day 14 現出せよ!Explosion! 其二

位元枚舉 在程式、演算法的世界中,很多問題往往用二進位去看後,都可以得到實作起來很簡單的做法,而且二進位能表達的事情遠比我們想像的多!舉凡有或沒有、是或不是、開...

鐵人賽 自我挑戰組 DAY 13

技術 Day 13 現出せよ!Explosion! 其一

從今天開始,我們終於可以開始真正地介紹演算法了!首先我們要介紹的是一切演算法的根本:「枚舉法」 前言 枚舉可以說是演算法設計的根本,核心精神是利用電腦高速計算的...

鐵人賽 自我挑戰組 DAY 12

技術 Day 12 吾心吾行澄如明鏡,所作所為皆為 SPEED 其二

昨天所討論的是在實際實作中該如何讓程式符合預期的時間複雜度,而今天要進一步聊聊該如何讓程式表現的比想像更好! 常數真的不重要? 前幾天的文章在介紹複雜度時,曾提...

鐵人賽 自我挑戰組 DAY 11

技術 Day 11 吾心吾行澄如明鏡,所作所為皆為 SPEED 其一

在前十天中,我們重點主要放在複雜度的理論和分析的手法。可是理論都知道了,但在實際實作中到底要怎麼寫才能使程式的效率一如預期或甚至比想像更好呢?這就是我們接下來兩...

鐵人賽 自我挑戰組 DAY 10

技術 Day 10 不數迴圈就沒辦法分析了?技豈是如此不便之物 終章

均攤分析練習 今天如昨天最後所說,要再帶一個均攤分析的練習,今天要練習的範例相當經典,而且各大程式語言中像陣列的資料結構均是利用了該分析的結論來實作相關的成員函...

鐵人賽 自我挑戰組 DAY 9

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

今天要介紹最後一種時間複雜度的分析技巧,要是你能夠把這幾天介紹的三種技巧融會貫通,之後在大部分的場景你應該都有辦法看出一段程式的時間複雜度。 之所以說大部分是...

鐵人賽 自我挑戰組 DAY 8

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

今天要繼續介紹時間複雜度的常用分析手法,文章內容參考了各種網路資源,其中最主要的是 AA 競程在 YouTube 的時間複雜度教學影片 ,有興趣的可以去他們的...

鐵人賽 自我挑戰組 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 你對速度一無所知

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

鐵人賽 自我挑戰組 DAY 1

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

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

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

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

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

鐵人賽 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天自己...