量級與複雜度函數 延續昨天,我們發現就連步驟數都不必估計得很精確,因此我們真正需要的是一個能找到最痛點的估計方法! 不過在此之前,先讓我介紹一個例子:你 14...
分而治之 分而治之(Divide and Conquer)是一個古老且廣泛使用的演算法策略。其核心概念是將大問題分解為若干較小的子問題,獨立解決這些子問題,然後...
125. Valid Palindrome 解題程式碼 var isPalindrome = function (s) { const loweCaseSt...
105. Construct Binary Tree from Preorder and Inorder Traversal 解題程式碼 var buildTr...
延續自昨天,今天要來探討分析解決問題方法的效率的方法! 程式好壞評估 這邊先請大家思考一下:要怎麼精準評估一個程式寫的好不好呢? 一般來說,一個程式 跑得快...
409. Longest Palindrome 解題程式碼 var longestPalindrome = function (s) { const cha...
Stack Stack 資料結構的主要特性是「Last-In-First-Out」。這個特性就好像我們使用一個只能從頂部取放物品的盒子。 為了更加具體化這個概念...
經典貪心問題 找零問題 店員在收錢時,常常會希望可以拿到以最少紙鈔、硬幣組成的現金 那要怎麼才能 n 元以最少的紙鈔、硬幣組成呢? 新台幣常用的紙鈔、硬幣有以下...
977. Squares of a Sorted Array 解題程式碼 var sortedSquares = function (nums) { con...
128. Longest Consecutive Sequence 解題程式碼 var longestConsecutive = function (nums)...
從今天開始,我們終於可以開始真正地介紹演算法了!首先我們要介紹的是一切演算法的根本:「枚舉法」 前言 枚舉可以說是演算法設計的根本,核心精神是利用電腦高速計算的...
接下來幾篇要介紹時間複雜度各種的分析技巧,不過因為個人能力有限,因此這裡開始會大量參考網路資源,尤其是 AA 競程在 YouTube 的時間複雜度教學影片。...
搜尋演算法 搜尋演算法就是在狀態空間進行枚舉,通過某種方式(可能是枚舉、或一些啟發是策略)來計算符合特定條件的解或最佳解。 常見的搜尋演算法 線性搜尋:線性搜...
位元枚舉 在程式、演算法的世界中,很多問題往往用二進位去看後,都可以得到實作起來很簡單的做法,而且二進位能表達的事情遠比我們想像的多!舉凡有或沒有、是或不是、開...
更多分治例題 快速冪 快速冪算法是一種高效計算大整數指數冪的方法。傳統的方法是通過連續乘法來計算 a 的 b 次方,但當 b 非常大時,這種方法的效率非常低。快...
遞迴是大事化小,要記得小事化無by 吳邦一 AP325 遞迴的概念 數學裡的遞迴 若一個函數直接或間接地用自己定義自己,它就是一個遞迴函數。 有很多數列或函...
543. Diameter of Binary Tree 解題程式碼 var diameterOfBinaryTree = function(root) {...
Priority Queue 主要特性 Priority Queue(優先隊列)是一個特別的資料結構,主要用於管理一組有序的元素。這些元素根據其優先級進行排序,...
遞迴是大事化小,要記得小事化無by 吳邦一 AP325 糖 + 香料 + 美好事物(圖論 and 遞迴) = 超多演算法 遞迴說到底其實只是實現演算法的「技...
起點與動機 在三十天前,我參加了 IT 鐵人賽,起初的動機很簡單,因為身邊有人要組隊報名,一時衝動就報了。經過這次比賽,我發現真的!透過寫作可以鞏固自己的知識基...
資料結構是電腦科學中一個關鍵概念,它是關於如何以特定的方式組織和存儲數據,以便能夠有效地訪問和修改。資料結構不僅僅是關於數據的存儲,而是提供了一種在數據上執行操...
Set Set 資料結構的主要特性是「元素的獨特性」和「無序性」。這個特性就像我們在生活中遇到的集合:每個元素都是獨特的,並且集合中的元素沒有特定的順序。 將其...
枚舉算法是一種基本但極為強大的演算法策略,主要用於遍歷所有可能的解空間以找到最佳或符合特定條件的解。這種方法在第一眼看來可能效率不高,但實際上,透過一些巧妙的設...
14. Longest Common Prefix 解題程式碼 var longestCommonPrefix = function (strs) { if...
110. Balanced Binary Tree 解題程式碼 /** * Definition for a binary tree node. * fun...
利用圖論概念的搜尋 BFS (Breadth-First Search) Breadth-First Search (BFS) 是一種圖遍歷算法,用於搜索圖或樹...
到目前為止,我們講過了該怎麼「暴力」枚舉問題、教過了該遞迴實作上的技巧。 不過在遇到某些問題時,你是否曾想過:「感覺只要我每個步驟都採用最佳的策略,好像就能得到...
昨天所討論的是在實際實作中該如何讓程式符合預期的時間複雜度,而今天要進一步聊聊該如何讓程式表現的比想像更好! 常數真的不重要? 前幾天的文章在介紹複雜度時,曾提...