動態規劃 (DP) 解題思路 最長共同子序列問題是典型的二維動態規劃問題。例如,給定兩個字串 text1 = "abcde" 和 text...
破題 這題目要求我們實作一種叫做 LRU 的 cache 機制,它可以快速地存取和更新資料。 為了實作這種機制,我們需要用到兩種資料結構:一個是 hash...
遞迴 解題思路 我們要找的最低公共祖先是一個節點,它同時是 p 和 q 的祖先,而且它的深度要盡量大。 我們用一個函數 來表示節點 的子樹中是否包含 p...
破題 本題要求找出一種課程學習順序,使得每一門課程都在它的先修課程之後學習。這可以用一種叫做「拓撲排序」的方法來解決。 有向圖是一種由節點和箭頭組成的圖,箭...
破題 這個題目要在一個字串陣列中找到第一個迴文字串。迴文是指一個字串正向和反向讀都是一樣的,例如 madam。 跟一流的人才幹大事,享受成功進步的高級樂趣!...
破題 本題的目的是檢查一個字串是否為迴文。迴文是指一個字串從前往後讀和從後往前讀是相同的。 跟一流的人才幹大事,享受成功進步的高級樂趣!內推機會來啦!能與優...
破題 這題要求我們判斷一個整數是否是迴文,換言之,它從前往後讀和從後往前讀是相同的。 跟一流的人才幹大事,享受成功進步的高級樂趣!內推機會來啦!能與優秀的程...
破題 這題要求我們模擬一系列的方塊從天空掉落到一維的數線上,並且回傳每次掉落後最高的高度。 跟一流的人才幹大事,享受成功進步的高級樂趣!內推機會來啦!能與優...
破題 這題是一個經典的幾何問題。給定一個建築物列表,每個建築物由其左邊界、右邊界和高度表示,我們需要找出這些建築物形成的天際線。天際線是由水平線段組成的,這些...
破題 這個演算法的目的是將一幅畫作分割成多個區段,每個區段都有自己的顏色。畫作由多個區段組成,每個區段都有一個起始點、結束點和顏色。如果兩個區段重疊,那麼重疊...
暴力法 首先,我們考慮一種最基本的方法:將 a 和 b 轉換為十進制數,然後求和,最後再將結果轉換為二進制數。 class Solution { fu...
廣度優先搜尋 (BFS) 破題 這個問題要找出最短的轉換序列長度,當我們看到「最短」時,我們可以想到使用「廣度優先搜尋」來解決。但是,這個問題並沒有直接我們圖...
破題 這題的目標是將一個字串中的每個字母都向後移動一定的位數。移動的位數由一個整數陣列指定,該陣列的長度與字串的長度相同。例如,如果我們有一個字串 abc 和...
破題 這題的目標是將一個字串中的數字替換為字母。這個字串中的每個偶數 index 位置都是一個小寫字母,而每個奇數 index 位置都是一個介於 0 到 9...
動態規劃和組合數 預備知識 組合數是從 個物品中選出 個的不同方法數。我們用 或 來表示它。它的計算公式是: 這裡 表示 的階乘,也就是 。...
破題 假設:陣列的長度為 。 題意:這題是希望我們找出一個整數陣列中第 大的數字。 方法一:計數排序 (Counting Sort) 解題思路 首先,...
滑動窗口 (Sliding Window) 解題思路 首先,我們需要理解一個基本概念:如果一個字串是另一個字串的排列,那麼這兩個字串中每個字元出現的次數必須完...
雙指標法 解題思路 初始化兩個指標:我們為兩個陣列 nums1 和 nums2 分別宣告一個指標,分別命名為 i 和 j。這兩個指標都會從各自陣列的起始位置...
深度優先搜尋 (DFS) 解題思路 節點訪問:我們會訪問每一個節點,並以該節點作為起始點。 路徑探索:對於每一個起始節點,我們會探索所有向下延伸的路徑。...
深度優先搜尋 (DFS) 解題思路 初始化:首先,我們使用深度優先搜尋(DFS)來遍歷 s 中的每一個節點。 子樹比較:對於 s 中的每一個節點,我們需...
廣度優先搜尋 (BFS) 解題思路 我們可以使用廣度優先搜尋來解決這個問題。最簡單的方法是使用一個 Pair (node, level) 來表示狀態,其中 n...
破題 首先,我們知道二元搜尋樹的一個重要特性是其中序走訪結果為遞增序列。因此,如果我們得到一個遞增陣列,我們可以確定這個陣列可以作為某個二元搜尋樹的中序走訪結...
遞迴 解題思路 這道題目要求我們判斷一棵二元樹是否是二元搜尋樹。 二元搜尋樹的特性是,對於任意一個節點,它的左子樹上所有節點的值都小於它,而它的右子樹上所有節...
破題 這道題目中的平衡二元樹定義為:二元樹中每個節點的左右子樹高度差的絕對值不超過1。根據定義,一棵二元樹是平衡二元樹,當且僅當其所有子樹也都是平衡二元樹。因...
破題 這道題目要求我們判斷是否存在從起點到終點的有效路徑。這可以轉化為求圖中兩個頂點是否連通的問題。我們可以使用廣度優先搜尋 (BFS)、深度優先搜尋 (DF...
雙堆疊 解題思路 我們使用兩個 stack 來模擬一個 queue 的操作。 一個 stack 叫做 input stack,用來存放新加入的資料。另一個 s...
複製到陣列後使用雙指標法 解題思路 有兩種常見的 List 實作方式,分別是 ArrayList 和 LinkedList。它們在存儲值的方法上有什麼區別呢?...
模擬加法 解題思路 兩個鏈結串列的數字是從個位開始存儲的,所以我們可以直接按位相加。 我們同時遍歷兩個鏈結串列,把每一位的數字和進位值相加,得到當前位數的和。...
動態規劃 (DP) 解題思路 費波那契數列的定義是 ,,並且 對於任意 成立。 這個遞迴關係可以用動態規劃來實現,只需要記錄 和 作為初始值,然後不斷...
暴力窮舉 解題思路 一個直覺的想法是,對陣列中的每個數字 x,檢查是否有另一個數字等於 target - x。 為了避免重複配對,我們只需在陣列中,位於 x...