HDU 2158 解題報告:滑動窗口找最短覆蓋子數組
HDU 2158 - 不錯的想法題:最短覆蓋子數組 給定長度為 n 的數組和 Q 個查詢數字,需找出包含所有查詢數字的最短連續子數組長度。n ≤ 10^5,暴力
Codeforces 448D 解題報告:二分查找求第 k 小數
Codeforces 448D - 二分查找求第 k 小數 這道題目要求在一個 a × b 的乘法表中找到第 k 小的數。乘法表中第 i 行、第 j 列的值為
拓撲排序:Kahn 算法(BFS 入度)、DFS 逆後序、C++ 鄰接表完整實現
定義與先決條件 有向無環圖 (DAG) 頂點的線性排序,使每條邊 u→v 中 u 在 v 之前。 先決條件:有向、無環。有環圖無拓撲序。 三種算法對比 算法
希爾排序:分組插入排序、步長序列選擇與 C++ 實現
算法思想 插入排序在「基本有序」時極快。希爾排序先按大步長分組插入排序,使數組宏觀有序,再逐步縮小步長,最後步長 1 為普通插入排序。 步長序列影響性能 原
LeetCode Min Stack:雙棧實現 O(1) 獲取最小值
題目要求 設計棧支援:`push(x)`, `pop()`, `top()`, `getMin()`,所有操作 O(1) 時間。 雙棧解法 主棧 `st`
Codeforces 448C Painting Fence:分治法最小刷漆次數
問題描述 有 n 塊木板(n ≤ 5000),高度為 a[i]。兩種刷漆方式: 垂直刷:單獨刷一塊,次數 = 1 水平刷:連續區間 [l,r] 整體刷一層,高
HDU 1686 Oulipo:KMP 算法統計模式串在文本中出現次數
HDU 1686 Oulipo:KMP 算法統計模式串出現次數 題目:給定模式串 W (|W| ≤ 10000) 和文本串 T (|T| ≤ 1,000,000
LeetCode Find Peak Element:線性掃描 O(n) 找任意峰值
LeetCode Find Peak Element:線性掃描找任意峰值 題目:給定數組 num,相鄰元素不相等。峰值元素定義為嚴格大於左右鄰居的元素(邊界視為
POJ 3904 Sky Code:容斥原理求四元組最大公約數為 1 的個數
POJ 3904 Sky Code:容斥原理求四元組最大公約數為 1 的個數 題目:給定 N (≤ 10000) 個整數 a_i (≤ 10000),選取 4
LeetCode Word Search:矩陣中 DFS 回溯查找單詞
LeetCode Word Search:矩陣中 DFS 回溯查找單詞 題目:給定 m x n 字符矩陣 board 和字符串 word,判斷 word 是否能
POJ 1159 Palindrome:動態規劃求最少插入次數構造回文
POJ 1159 Palindrome:動態規劃求最少插入次數構造回文 題目:給定長度 N (≤ 5000) 的字符串,允許在任意位置插入字符,求將其變為回文串
C++ 訪問者模式:雙分派實現操作與數據結構分離
模式意圖 訪問者模式在不修改現有類的前提下,為類增加新操作。將操作邏輯與數據結構分離,適用於「數據結構穩定、操作頻繁變化」的場景。 核心角色 Visitor
LeetCode Single Number:位運算異或法 O(n) 時間 O(1) 空間
LeetCode Single Number:位運算異或法 題目:給定一個非空整數數組,除了某個元素只出現一次外,其餘每個元素均出現兩次。找出那個只出現一次的元
POJ 2299 Ultra-QuickSort:歸併排序求逆序對數
POJ 2299 Ultra-QuickSort:歸併排序求逆序對數 題目要求計算將一個序列通過相鄰交換排序為升序所需的最小交換次數,這等價於求序列的逆序對總數
Tomcat 架構解析:Digester 库实现 XML 到 Java 对象的映射
Tomcat 架構解析:Digester 库实现 XML 到 Java 对象的映射 Apache Commons Digester 是一個基於規則的 XML 解
Android SharedPreferences 自定義存儲路徑實現原理與反射方案
Android SharedPreferences 自定義存儲路徑實現 默認情況下,SharedPreferences 文件存放在 /data/data/<
STL 六大組件詳解(二):仿函數——可調用對象的威力
STL 六大組件詳解(二):仿函數 仿函數 是一個重載了 operator() 的類或類模板,使其實例可像函數一樣被調用。它不僅能保存狀態(成員變量),還能在運