2026年2月19日 星期四

KMP 演算法

背景:假設有字串 s 跟比較對象 pattern,檢查是否有 pattern 存在於 s。 

目的:字串匹配時,暴力法會是每個字元 s[i] 作為起始點來看是否為 pattern,這樣的時間複雜度是 O(n*m)。

KMP 演算法藉由陣列 next 儲存 pattern 本身的「最長共同前後綴 (prefix/postfix)」來節省每次都要從頭匹配的 bottleneck,達成 O(n) 的複雜度。

2026年2月18日 星期三

SQL Note

 -- SELECT ...

-- FROM ...
-- WHERE ...       -- ✅ 分組前過濾資料
-- GROUP BY ...    -- ✅ 再分組
-- HAVING ...      -- ✅ 分組後過濾聚合結果
-- ORDER BY ...

GROUP BY 的規則

  • 當你使用 GROUP BY 時:

    • SELECT 中的欄位 只能是

      1. GROUP BY 裡的欄位

      2. 聚合函數(COUNT, SUM, MAX...)

  • MIN()MAX()聚合函數不能放在 WHERE

  • 聚合函數要在 GROUP BY 後 使用,所以應該放在 HAVING 子句