LeetCode 142 環形鏈表 II 完整解法:Floyd 判圈算法數學證明與代碼實現
題目描述 給定單鏈表頭節點 head,判斷是否有環。若有環,返回**環入口節點**;否則返回 nullptr。要求 **O(1) 空間複雜度**。 核心算法:
HDU 4117 GRE Words 題解:後綴數組 + DP 求最大權值單詞鏈
題目大意 給定 N 個單詞,每個單詞有權值。需選擇一個單詞序列,使得**前一個單詞是後一個單詞的子串**。最大化所選單詞權值之和。輸出最大和。 約束:數據規模允
C++ 設計模式精講:狀態模式 (一) — 核心原理與銀行取款案例
前言:為什麼需要狀態模式? 0)、透支取款 (-2000~0)、凍結拒絕 (<-2000)。若直接在 Account::WithDraw() 中寫 if-els
C++ 設計模式實戰:狀態模式 (二) — 智能空調系統完整實現
前言:從理論到工程 承接上篇「狀態模式 (一)」的理論基礎,本文通過一個**智能空調系統**的完整實現,展示狀態模式如何將複雜的條件邏輯封裝進獨立狀態類,實現「
C++ 引用(&) 與取地址(&) 徹底區分:語法語義與實戰辨析
前言:同一符號,兩種身份 C++ 中 & 符號雙重身份讓初學者困惑: 聲明中的 & → **引用宣告符** (Reference Declarator)。 表
delete 後必須置 nullptr:C++ 指針安全的鐵律與原理
前言:一個經典的安全習慣 C++ 標準規定:**delete nullptr 是合法的、無副作用的**。但 delete p 後,p 本身**不會自動變為 nu
STL 核心容器完全指南:vector、string、set、map 實戰用法大全
前言:容器選型的藝術 STL 容器是 C++ 標準庫的基石。掌握 vector、string、set、map 的特性、常用操作、效能特徵與最佳實踐,是高效 C+
後綴數組求最長公共子串:原理、實現與複雜度權衡
前言:問題定義 給定文本串 text (長度 m) 和模式串 pattern (長度 n),尋找兩者共有的**最長連續子串** (Longest Common
memmove 完全指南:安全處理重疊記憶體複製的藝術
前言:為什麼需要 memmove? memcpy 是高效複製利器,但有一個致命限制:**源與目標記憶體區域不能重疊**。若重疊,行為未定義 (通常導致數據損壞)
ACM 經典題:螺旋矩陣生成 (上海交大 1021) 完整解法與代碼
題目描述 給定正整數 n,生成一個 n×n 矩陣,從左上角 (1,1) 開始填 1,沿順時針螺旋向內遞增填充,最終輸出矩陣。例如 n=4: 1 2 3
大端小端對位域存儲的影響:從理論到實戰驗證
前言:位域佈局的不確定性 C/C++ 標準規定:位域在記憶體中的佈局順序、對齊方式、跨位元組邊界行為均為實現定義。大端/小端架構差異會顯著影響位域的實際存儲模式
std::list::size() 為何是 O(n)?深度解析 splice 優化的設計權衡
前言:一個反直覺的事實 在 C++98/03 標準中,std::list::size() 的時間複雜度是 O(n)。這意味著每次呼叫 size() 都要遍歷整個
STL 分配器原碼解讀:_Obj* __STL_VOLATILE* __my_free_list 雙重指針詳解
前言:遇到的神秘聲明 閱讀 SGI STL 記憶體分配器二級分配器源碼時,會看到這一行: _Obj* __STL_VOLATILE* __my_free_lis
STL __type_traits 源碼剖析:編譯期類型特性提取機制
前言:為何需要 __type_traits? STL 容器與演算法需針對不同類型採用最優策略。例如: 具有 平凡建構/複製/賦值/解構 的類型 (如 int,
C++ 頭文件與實現文件分離完全指南:規範、模板特例與避坑
前言:為什麼要分離? 隨著專案規模增長,將宣告與定義分離到 .h (頭文件) 和 .cpp (實現文件) 是 C++ 專案管理的基石。這不僅關乎編譯速度,更關乎
C++ Traits 編程技法詳解:從內嵌型別到模板偏特化
前言:為何需要 Traits? 在泛型編程中,演算法常需獲取類型的相關特性(如迭代器的 value_type、指針指向的元素類型)。C++ 模板無法直接「反射」
C++ 指針大觀:泛型指針、原生指針與智能指針深度解析
前言 在 C/C++ 程式設計中,指針是核心也是難點。隨著語言演進,衍生出「泛型指針」、「原生指針」、「智能指針」等概念。本文將系統梳理三者的定義、差異與適用場