文章

Page 08 / 10

  1. LeetCode 筆記 - 617. Merge Two Binary Trees 解析如何合併兩棵二元樹。本文採用深度優先搜尋(DFS)同步走訪兩棵樹,將重疊節點的數值相加,並靈活處理單側存在的子樹結構。這是一篇掌握樹狀結構走訪與動態合併邏輯的基礎開發心得。 #LeetCode
  2. Python 如何優雅地限制執行緒數量 在進行平行運算時,無限制開啟執行緒常會導致系統負載過重甚至崩潰。本文介紹如何運用「生產者與消費者」模型,優雅地限制執行緒(Thread)數量。透過控制併發規模,能有效提升程式的穩定性與錯誤處理能力,達成高效且安全的平行化作業。 #Python#Thread
  3. Python 如何順利地取得上個月的月份 想在 Python 中精確取得上個月的日期卻擔心月份天數不同(如二月)嗎?本文推薦使用 today.replace 方法,先將日期固定在當月第一天再向前回推。這種寫法能完美避開日期運算的常見 Bug,是開發自動化報表或統計功能時的必備技巧。 #Python
  4. Python 如何處理存檔編碼錯誤 在 Python 進行檔案儲存時,若遇到不確定的資料編碼常會引發 UnicodeEncodeError。本文教學如何善用 Python 3 的 Unicode 字串優勢,並施展「編碼小魔法」來正確處理如 Emoji 等特殊字元的儲存問題,確保資料在轉檔過程中完整不遺失。 #Python
  5. LeetCode 筆記 - 695. Max Area of Island 給你一張包含島嶼的海圖,求最大島嶼面積。解題思路聚焦於深度優先搜尋(DFS),當發現陸地時便展開遞迴探索所有相連格位並計數。本文展示如何透過簡單的圖形遍歷技巧,精確衡量複雜形狀島嶼的規模。 #LeetCode
  6. LeetCode 筆記 - 733. Flood Fill 解析圖像處理中常見的「油漆桶」填色演算法。針對給定的座標與新顏色,本文利用深度優先搜尋(DFS)遍歷所有相連且顏色相同的區域進行取代。這是一篇理解圖形連通分量與遞迴填色邏輯的實用技術分享。 #LeetCode
  7. LeetCode 筆記 - 121. Best Time to Buy and Sell Stock LeetCode 基礎經典題,探討股票買賣的最大獲利。解題邏輯聚焦於尋找歷史最低點,並在遍歷過程中不斷計算目前價格與低點的差額,進而找出最高獲利。本文分享如何用簡單的一次遍歷 O(N) 達成最佳化解法。 #LeetCode
  8. LeetCode 筆記 - 350. Intersection of Two Arrays II 延續 349 題的交集概念,本題要求保留重複出現的元素。解題核心同樣採用排序後配合雙指針(Two Pointers)的策略,但在匹配成功時不進行去重處理,而是直接記錄結果,協助讀者理解相同演算法在不同限制下的細微調整。 #LeetCode
  9. LeetCode 筆記 - 349. Intersection of Two Arrays 找出兩個數列中重複的元素,且結果不包含重複值。本文介紹先將數列轉換為集合(set)以去除冗餘,再透過排序後利用雙指針(Two Pointers)進行同步掃描的策略。這種方法能確保在 O(N) 時間內精確找出交集元素。 #LeetCode
  10. LeetCode 筆記 - 567. Permutation in String 判定字串 s1 的排列組合是否出現在 s2 中。本文捨棄窮舉所有排列,轉而利用滑動視窗(Sliding Window)配合計數器(Counter)追蹤字元出現頻率。這種策略能大幅降低計算成本,在線性時間內完成子字串的頻率比對。 #LeetCode
  11. LeetCode 筆記 - 647. Palindromic Substrings 要求計算字串中所有迴文子字串的數量。本文再次運用強大的 Manacher 演算法,利用其對稱特性將時間複雜度優化至 O(N)。文中詳述如何透過演算法產出的迴文半徑推導出最終數量,是一篇探討進階迴文處理技巧的筆記。 #LeetCode
  12. LeetCode 筆記 - 88. Merge Sorted Array 挑戰合併兩個已排序的數列。本文解析歸併排序(Merge Sort)的核心邏輯,透過比較兩數列首位元素依序放入結果中。文中特別分享 Python 內直接修改記憶體位置的語法技巧,達成原地合併且不浪費額外空間。 #LeetCode
  13. LeetCode 筆記 - 322. Coin Change 解析經典的零錢兌換問題。本文探討如何運用動態規劃(Dynamic Programming)建立遞迴關係式,透過查表法記錄組合出每個目標金額所需的最少錢幣數量。這是一個理解 DP 如何將大問題分解為子問題並重複利用結果的優質範例。 #LeetCode
  14. LeetCode 筆記 - 146. LRU Cache 解析如何實作具備最近最少使用(LRU)機制的快取系統。本文探討 Python 中 OrderedDict 的應用,並分享一個提升字典鍵值檢查效率的「奇技淫巧」,顯著優化執行速度。這是一篇兼具資料結構原理與 Python 效能優化的心得。 #LeetCode
  15. LeetCode 筆記 - 18. 4Sum 挑戰四數之和問題。為了避免陷入 O(N^4) 的暴力解陷阱,本文介紹將問題拆解為兩兩組合並利用字典(dict)儲存結果的 O(N^2) 優化策略。配合排序後的跳過重複計算技巧,能在大規模數據下保持優異的執行效能。 #LeetCode
  16. LeetCode 筆記 - 63. Unique Paths II 在有障礙物的地圖中尋找機器人的唯一路徑數量。這是一個標準的動態規劃(DP)問題,本文解析如何透過加總格位左方與上方的路徑數來動態遞推結果。文中特別強調障礙物處理與起點初始化的關鍵細節。 #LeetCode#LeetCode Classic
  17. LeetCode 筆記 - 876. Middle of the Linked List 尋找鏈結串列的中間節點。本文運用經典的快慢指針(Two Pointers)大法,透過快指針每次移動兩步、慢指針移動一步的速差,讓慢指針在遍歷結束時精確停在中間位置,是一篇展示指針技巧如何優化遍歷效能的範例。 #LeetCode
  18. LeetCode 筆記 - 19. Remove Nth Node From End of List 解析如何在單向鏈結串列中移除倒數第 n 個節點。本文教學使用雙指針技巧,透過前導指針領先 n 步的設計,讓追隨指針精確停在目標節點前。同時分享加入虛擬節點以處理邊界情況的實務開發經驗。 #LeetCode
  19. LeetCode 筆記 - 217. Contains Duplicate LeetCode 基礎實作題,判定數列中是否包含重複元素。本文探討利用 Python 內建的 map 或 set 資料結構,將檢查存在與否的時間複雜度優化至平均 O(1),幫助讀者理解基礎集合運算在提升程式效率上的重要性。 #LeetCode
  20. LeetCode 筆記 - 53. Maximum Subarray 探討最大子數列問題。本文解析優美且強大的 Kadane 演算法,其核心思想在於遍歷過程中動態決定是否加入前一項的累積和。透過簡單的一次遍歷,就能在 O(N) 時間內精確找出總和最大的連續區段,是動態規劃的極簡體現。 #LeetCode
  21. LeetCode 筆記 - 16. 3Sum Closest 延續 3Sum 的概念,本題要求找出三數之和最接近目標值的組合。解法核心在於運用雙指針(Two Pointers)大法,並在夾擠過程中動態更新與目標值的最小差值,是掌握數列搜尋與指針操作技巧的進階練習。 #LeetCode#LeetCode Classic
  22. LeetCode 筆記 - 557. Reverse Words in a String III 要求反轉句子中每個單字的字符。雖然本題適合運用雙指針,但作者分享了更具 Python 風格的簡潔實作方式。本文記錄了在處理字串分割、反轉與合併時的靈活思維,展示如何用直覺的寫法解決日常開發中的字串處理需求。 #LeetCode
  23. LeetCode 筆記 - 344. Reverse String LeetCode 基礎反轉字串題。雖然 Python 具備多種簡潔的反轉寫法,本文特別採用雙指針(Two Pointers)大法進行實作,透過頭尾對調的方式達成原地修改。這是一篇適合初學者掌握指針移動與基本字串操作的技術筆記。 #LeetCode
  24. LeetCode 筆記 - 167. Two Sum II - Input Array Is Sorted 針對已排序數列的 Two Sum 問題,本文解析雙指針(Two Pointers)的標準應用。透過從數列兩端向中間逼近,能以最有效率的方式找出目標值索引,並避免重複計算,是理解排序數列優化搜尋的基礎入門題。 #LeetCode
  25. LeetCode 筆記 - 283. Move Zeroes 針對 LeetCode 第 283 題,要求將數列中的所有零移動至尾端並保持非零元素的相對順序。本文解析如何運用雙指針(Two Pointers)大法,透過一個插入指標(insert_pos)動態調整非零數值的位置,達成原地修改的高效實作。 #LeetCode
  26. LeetCode 筆記 - 329. Longest Increasing Path in a Matrix 挑戰在矩陣中尋找最長遞增路徑。本文結合深度優先搜尋(DFS)與記憶化搜索(Memoization)技巧,透過一張表格紀錄已計算過的點位結果,避免重複遞迴,將複雜度大幅降低,讓程式能在龐大的矩陣空間中快速收斂出最長路徑。 #LeetCode#LeetCode Classic
  27. LeetCode 筆記 - 1192. Critical Connections in a Network 解析 LeetCode 經典難題「網路中的關鍵連接」。本文引導讀者複習 Tarjan 演算法,透過尋找圖形結構中的環,來識別哪些連接若斷開會導致網路不連通(即橋接點)。文中推薦相關優質影片,協助理解演算法核心邏輯。 #LeetCode#LeetCode Classic
  28. LeetCode 筆記 - 15. 3Sum 探討經典的 3Sum 問題。本文解析如何將三數之和降維思考為多次的 Two Sum,將複雜度從 O(N^3) 優化至 O(N^2)。文中介紹兩種主流演算法策略,協助讀者在面對海量數列時,依然能高效找出總和為零的所有組合。 #LeetCode#LeetCode Classic
  29. LeetCode 筆記 - 11. Container With Most Water 解析 LeetCode 經典題目「盛最多水的容器」。本文教學如何運用夾擠定理與雙指針策略,透過不斷更換較低高度的指針來逼近最大面積。文中也分享了紀錄最高高度以加速計算的實作細節,優化整體演算法效能。 #LeetCode#LeetCode Classic
  30. LeetCode 筆記 - 189. Rotate Array 探討如何將數列向右旋轉 k 次。本文分享 O(1) 空間複雜度的優化策略,並介紹 Python 中 nums[:] 的記憶體修改技巧,讓開發者能在不使用額外陣列的情況下,直接在原地完成數列移動,達成高效且省空間的實作。 #LeetCode
輸入關鍵字開始搜尋 · ↑↓ 選擇 · Enter 開啟