HackMD 完整版請點我

字串比對(String Matching)

KMP 演算法

image

KMP 演算法是一種用於字串搜尋的高效方法。透過建立部分配對表(最長的相同前後綴),可以快速定位搜尋字串中的可能配對位置,減少不必要的重複比較,從而加速搜尋過程。

KMP 演算法其實相對複雜且較難實作,我個人認為有大概理解概念就好,實際上也很少遇到需要直接實作該演算法的情境。

Leetcode

位元運算(Bit Manipulation)

image

Bit manipulation 是在電腦中用「位元」(bit)來進行操作的技巧,這種技巧常在程式設計競賽或像 Leetcode 這樣的題目中出現。位元是電腦中最基本的單位,由 0 或 1 組成,這跟開關一樣,只有開或關的狀態。這些 0 與 1 會再經由二進位制二補數的方式,組成所有的其他數字。常見的位元操作有:AND, OR, XOR, NOT, Shift 等等,參考以下:
image

Leetcode

雙重指標(Two Pointers)

image
常用於陣列當中,用兩個指標指著不同的位置,與滑動視窗(Sliding Window)有異曲同工之妙,兩者基本上是相同技巧。

快慢指標(Fast & Slow Pointers)

此種技巧為雙重指標的特殊版本,使用一快一慢的指標(一次走不同步數 or 一個先走一個後走),常用在 Linked List 當中。

這樣可以幹嘛呢?我們來看看以下的例子:

尋找中點

image

判斷 Cycle 是否存在 Linked List 中

image
image

尋找倒數第 K 個節點

image

Leetcode