字符串左旋轉算法:三步反轉法O(n)時間O(1)空間完整解析
問題描述 字符串左旋轉操作:將字符串前面的若干字符移動到尾部。例如 abcdef 左旋 2 位得到 cdefab。要求對長度為 n 的字符串實現 O(n) 時間
鏈式隊列基本操作完整實現指南(附C語言代碼詳解)
什麼是隊列? 隊列是一種遵循「先進先出」(FIFO)原則的線性數據結構。就像我們日常生活中排隊買票一樣,最先排隊的人最先買到票離開。在隊列中,我們稱刪除端為「隊
HDU 2062 Subset Sequence:子集序列字典序第 m 個構造
題目大意 集合 {1, 2, ..., n} 的所有非空子集按字典序排序(先按第一個元素,再按第二個...),求第 m 個子集。n ≤ 25,m 可能很大(需
LeetCode 合併兩個有序鏈表:原地拼接與虛擬頭節點技巧
題目大意 給定兩個非遞減單鏈表 l1、l2,將它們合併為一個新的有序鏈表並返回。要求原地拼接現有節點,不創建新節點(除虛擬頭節點外)。 核心思路:雙指針 +
三杯水問題:BFS + 三維訪問數組求最少倒水次數
題目大意 三個容量分別為 V3 的水杯,初始狀態只有最大杯滿水 (V1, 0, 0),其餘空杯。允許任意兩杯之間倒水,直到源杯空或目標杯滿。求達到目標狀態 (
HDU 1506:最大子矩陣面積的 O(n) 優化 DP(單調棧思想前身)
題目大意 給定長度 n (≤ 100000) 的直方圖高度序列 a[0..n-1],求由連續柱子構成的矩形最大面積。即經典 Largest Rectangle
Anti-Nim 反尼姆博弈 (HDU 2509):必勝態判定與模板代碼
遊戲規則 有 n 堆石子,兩人輪流操作,每次必須從恰好一堆中取走至少一個石子。取走最後一顆石子者輸(誤ère Nim)。判斷先手是否必勝。 核心結論 (Ant
UVA 10453 / POJ 10453 - Make Palindrome:最少插入構造回文 DP 全解析
題目大意 給定長度 ≤ 1000 的字符串,允許在任意位置插入字符,求將其變為回文的最少插入次數,並輸出字典序最小的結果回文串。 動態規劃建模 dp[i
九度OJ 1018 統計同成績學生人數:基礎數組計數
題目大意 輸入學生人數 n (≤ 1000) 及其成績,再輸入一個查詢成績 grade,輸出成績等於 grade 的學生人數。n = 0 結束輸入。多組測試數據
Codeforces Round #184 (Div. 2) 題解:三道題目的核心思路與代碼
比賽概覽 Codeforces Round #184 (Div. 2) 包含三道題目,分別考察貪心構造、連分數/模擬、二進制位操作與 Map 去重。以下為各題核
C++ 構造/析構函數中調用虛函數的行為解析
核心結論 在構造函數或析構函數中調用虛函數,不會觸發動態多態,而是靜態綁定到當前正在構造/析構的類的版本。 構造函數中調用虛函數 class Base {
字符串全排列遞歸算法:從基礎到去重優化完整指南
問題定義 給定長度 n (1 ≤ n ≤ 6) 的互不相同小寫字母字符串(已按字典序排序),輸出其所有全排列,按字典序升序,每行一個,末尾多輸出一個空行。 遞
九度OJ 1010 A+B:英文單詞解析與表達式求值
題目大意 輸入由英文單詞組成的加法表達式,如 one + two = 或 one two + three four =(即 12 + 34),計算並輸出結果。遇
九度OJ 1052 找x:線性查找入門與邊界處理
題目大意 給定 n (≤ 200) 個整數組成的序列與一個目標值 x,在序列中查找 x 首次出現的下標(0-based)。若不存在輸出 -1。多組測試數據,直到
Linux gethostid() 實現原理與源碼分析
函數原型與用途 #include <unistd.h> long gethostid(void); gethostid() 返回當前主機的 32
HDU 1394:逆序數滾動優化與最小逆序數求解
題目大意 給定一個 0~n-1 的排列,定義逆序數為 a[j] 的對數。將首元素移至末尾進行循環移位,求所有 n 個循環移位中的最小逆序數。 核心公式推導