LeetCode 24 兩兩交換鏈表節點:指針操作圖解
問題描述 給定鏈表,每兩個相鄰節點交換位置。例如 1→2→3→4 → 2→1→4→3。需原地修改指針,不修改節點值。 核心思路:三指針操作交換相鄰對 使用哨兵
BestCoder Round #54 題解匯總:排序、因子、等比數列、幾何反射
A. HDU 5427 排序問題 按字符串後的數字降序排序,輸出原字符串。關鍵:解析字符串提取數字,結構體存儲原串與數字,sort 自定義比較器。 B. HD
LeetCode 21 合併兩個有序鏈表:雙指針原地合併
問題描述 將兩個升序鏈表合併為一個新的升序鏈表並返回。新鏈表由原鏈表節點拼接而成(原地操作)。 核心算法:雙指針 + 哨兵節點 創建哨兵節點 dummy,t
C/C++ 基礎實戰:結構體對齊、深淺拷貝、隊列封裝、字符串類實現
1. 結構體內存對齊規則 對齊原則:成員偏移量必須是其類型大小的整數倍;結構體總大小必須是**最大成員類型大小**的整數倍。 示例: struct A { c
LeetCode Valid Palindrome:雙指針判斷回文串(忽略非字母數字、大小寫)
問題描述 給定一個字符串,驗證它是否為回文串。只考慮字母數字字符,忽略大小寫。空字符串視為有效回文。 核心算法:雙指針原地判斷 左指針 l=0,右指針 r=
HDU 1565 方格取數:最大權獨立集 = 總和 - 最小割 (網絡流)
問題描述 n×n 方格,每格有權值。選取若干格子使任兩格不相鄰(不共邊),最大化權值和。即**最大權獨立集**問題。 核心轉化:二分圖最大權獨立集 = 總權
LeetCode 191 位1的個數:Brian Kernighan 算法 n&(n-1) 消除最低位1
問題描述 編寫一個函數,輸入一個無符號整數,返回其二進制表示中 1 的個數(漢明重量)。例如 11 (二進制 1011) 返回 3。 解法一:逐位檢查 (O(
LeetCode 202 快樂數:集合檢測循環 vs 快慢指針 O(1) 空間
問題描述 「快樂數」定義:對一個正整數,反覆替換為其各位數字平方和,最終若變為 1 則為快樂數;否則會陷入不包含 1 的循環。判斷給定數 n 是否為快樂數。
LeetCode 216 組合總和 III:DFS 回溯 + 剪枝優化
問題描述 找出所有相加之和為 n 的 k 個數的組合。組合中只允許含 1-9 的正整數,且每組合中數字不重複。返回所有可能的組合列表。 核心算法:DFS 回溯
LeetCode 179 最大數:自定義比較器排序拼接
問題描述 給定一組非負整數,重新排列它們的順序使之組成一個最大的整數。例如 [3,30,34,5,9] → 9534330。結果可能很大,返回字符串。 核心思
LeetCode Permutation Sequence:康托展開求第 k 個排列
問題描述 給定 n 和 k,返回集合 {1,2,...,n} 的所有排列中,按字典序排列的第 k 個排列(1-based)。例如 n=3, k=3 返回 213
LeetCode 207 課程表:拓撲排序判斷有向圖是否有環
問題描述 給定 numCourses 門課程(編號 0 到 n-1)和先修關係 prerequisites(如 [0,1] 表示修 0 需先修 1),判斷是否能
C++ 虛函數與多態深度解析:從基礎到虛析構函數
核心概念:虛函數實現運行時多態 C++ 中,基類指針/引用指向派生類對象時,調用虛函數會根據對象的實際類型(而非指針類型)動態綁定到派生類的覆蓋版本。這是面向對
LeetCode Single Number II:位運算統計法解「只出現一次,其餘出現三次」
題目描述 給定一個整數數組,除了某個元素只出現一次外,其餘元素均出現三次。找出那個只出現一次的元素。要求:線性時間複雜度,常數空間複雜度。 核心思路:逐位統計
LeetCode 209:長度最小的子數組——前綴和+二分查找 vs 雙指針滑動窗口
題目回顧 給定一個正整數數組 nums 和目標值 s,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組,並返回其長度。若不存在,返回 0。 解法一:前綴和
NYOJ 654:0/1 背包常數優化技巧——動態縮小內層循環範圍
背景 標準 0/1 背包內層循環為 = w[i]; --v)。當背包容量 V 很大(如 106),但物品總體積遠小於 V 時,大量循環是無效的。NYOJ 654
HDU 3652 B-number:數位 DP 求含「13」且能被 13 整除的數字個數
問題描述 所謂「B-number」(wqb-number),指十進制表示中包含子串「13」且能被 13 整除的非負整數。給定 n (1 ≤ n ≤ 1,000,