LeetCode 筆記 - 167. Two Sum II - Input Array Is Sorted
針對已排序數列的 Two Sum 問題,本文解析雙指針(Two Pointers)的標準應用。透過從數列兩端向中間逼近,能以最有效率的方式找出目標值索引,並避免重複計算,是理解排序數列優化搜尋的基礎入門題。
針對已排序數列的 Two Sum 問題,本文解析雙指針(Two Pointers)的標準應用。透過從數列兩端向中間逼近,能以最有效率的方式找出目標值索引,並避免重複計算,是理解排序數列優化搜尋的基礎入門題。
針對 LeetCode 第 283 題,要求將數列中的所有零移動至尾端並保持非零元素的相對順序。本文解析如何運用雙指針(Two Pointers)大法,透過一個插入指標(insert_pos)動態調整非零數值的位置,達成原地修改的高效實作。
挑戰在矩陣中尋找最長遞增路徑。本文結合深度優先搜尋(DFS)與記憶化搜索(Memoization)技巧,透過一張表格紀錄已計算過的點位結果,避免重複遞迴,將複雜度大幅降低,讓程式能在龐大的矩陣空間中快速收斂出最長路徑。
解析 LeetCode 經典難題「網路中的關鍵連接」。本文引導讀者複習 Tarjan 演算法,透過尋找圖形結構中的環,來識別哪些連接若斷開會導致網路不連通(即橋接點)。文中推薦相關優質影片,協助理解演算法核心邏輯。
探討經典的 3Sum 問題。本文解析如何將三數之和降維思考為多次的 Two Sum,將複雜度從 O(N^3) 優化至 O(N^2)。文中介紹兩種主流演算法策略,協助讀者在面對海量數列時,依然能高效找出總和為零的所有組合。
解析 LeetCode 經典題目「盛最多水的容器」。本文教學如何運用夾擠定理與雙指針策略,透過不斷更換較低高度的指針來逼近最大面積。文中也分享了紀錄最高高度以加速計算的實作細節,優化整體演算法效能。
探討如何將數列向右旋轉 k 次。本文分享 O(1) 空間複雜度的優化策略,並介紹 Python 中 nums[:] 的記憶體修改技巧,讓開發者能在不使用額外陣列的情況下,直接在原地完成數列移動,達成高效且省空間的實作。
要求將包含負數的已排序數列進行平方後再次排序。本文探討如何利用雙指針從兩端向中間掃描的技巧,巧妙處理負數平方後的數值變化,達成在 O(N) 線性時間內完成平方與排序的優化解法。
本文探討如何在複製的二元樹中找出對應目標節點的參照。這是一個典型的樹遍歷問題,透過同步探索原始樹與複製樹,能快速定位目標。本文提供基礎的 Tree Traversal 實作思路,幫助讀者掌握遞迴搜尋技巧。
解析如何在不使用額外空間(O(1) space)的情況下計算矩陣中的戰艦數量。關鍵在於只統計戰艦的「左上角」起點。透過檢查每個戰艦格位上方與左方是否為空,能精確識別出每艘船的首位,達成高效且簡潔的計數邏輯。