LeetCode 187:重複的 DNA 序列(滑動窗口 + 哈希)
LeetCode 187:重複的 DNA 序列 給定 DNA 字符串(只含 A,C,G,T),找出所有長度為 10 且出現超過一次的子串。 滑動窗口 + 哈希
HDU 1520 / POJ 2342:周年派對(樹形 DP)
HDU 1520 / POJ 2342:周年派對 公司員工構成一棵樹,每個節點有歡樂度評分。選擇參派員工,使任意員工與其直屬上司不同時出席,最大化總歡樂度。
LeetCode 275:H 指數 II(有序數組二分查找)
LeetCode 275:H 指數 II 引用數數組已按升序排列,求 H 指數。要求 O(log n) 時間。 二分查找 利用有序性:若 = n - mid,
LeetCode 200:島嶼數量(DFS 洪水填充)
LeetCode 200:島嶼數量 給定二維網格 1(陸地)和 0(水),計算島嶼數量。島嶼由水平/垂直相鄰陸地組成,四周被水包圍。 DFS 遞歸標記 遍歷網
LeetCode 279:完全平方數(動態規劃)
LeetCode 279:完全平方數 給定正整數 n,求最少多少個完全平方數之和等於 n(四平方和定理保證 ≤4)。 動態規劃 dp[i] 表示組成 i 所需
LeetCode 274:H 指數(計數排序 + 逆序累加)
LeetCode 274:H 指數 給定引用次數數組,求最大的 h 使得至少 h 篇論文引用數 ≥ h。 計數排序思想 O(n) 引用數超過 n 的視為 n。
LeetCode 284:頂端迭代器(緩存下一元素)
LeetCode 284:頂端迭代器 在標準 Iterator(next(), hasNext())基礎上實現 peek(),返回下一元素但不移動指針。 緩存
LeetCode 61:旋轉鏈表(快慢指針 + 成環法)
LeetCode 61:旋轉鏈表 給定鏈表頭節點和非負整數 k,將鏈表向右旋轉 k 位。例如 1→2→3→4→5, k=2 → 4→5→1→2→3。 成環法(
LeetCode 263:醜數判斷(質因數分解)
LeetCode 263:醜數判斷 判斷給定正整數是否為醜數(質因數僅含 2、3、5)。1 視為醜數。 算法 反覆除以 2、3、5 直到不能整除,最後檢查剩餘
LeetCode 273:整數轉英文單詞(遞歸分治)
LeetCode 273:整數轉英文單詞 將非負整數(< 2^31)轉為英文表示。如 123 → One Hundred Twenty Three。 遞歸分治
LeetCode 13:羅馬數字轉整數(單次遍歷)
LeetCode 13:羅馬數字轉整數 羅馬數字規則:相同數字相加,小數字在大數字左邊表示減法(如 IV=4, IX=9)。 單次遍歷算法 從左到右遍歷,若當
LeetCode 35:搜索插入位置(二分查找變體)
LeetCode 35:搜索插入位置 給定有序無重複數組和目標值,返回目標索引;若不存在,返回其應插入的位置以保持有序。 標準二分查找 循環條件 left <
LeetCode 264:醜數 II(三指針動態規劃)
LeetCode 264:醜數 II 醜數定義:質因數僅包含 2、3、5 的正整數。求第 n 個醜數。序列:1, 2, 3, 4, 5, 6, 8, 9, 10
C++ 線程安全單例工廠模式(雙重檢查鎖 + 關鍵區)
C++ 線程安全單例工廠 使用 Windows 關鍵區(CRITICAL_SECTION)實現雙重檢查鎖,確保多線程環境下單例創建線程安全。 模板類實現 #i
LeetCode 268:缺失數字(求和法與位運算法)
LeetCode 268:缺失數字 給定包含 0~n 中 n 個不重複數字的數組,找出缺失的那一個。 解法一:數學求和 總和 n*(n+1)/2 減去數組元素
C/C++ 線程本地存儲(TLS)實現線程私有緩存區
線程本地存儲(TLS)應用:多線程文件複製的私有緩存區 多線程調用同一複製接口時,若使用全局靜態緩存會導致數據競爭。TLS 允許每個線程擁有獨立的緩存區實例,線
有序數組轉二分遍歷順序數組(C++ 實現)
有序數組轉二分遍歷順序 參數調優時,按順序遍歷可能不高效。將有序數組重排為「二分查找順序」(先取中間,再遞歸取左右子區間中間),可更快逼近最優參數。 算法邏輯