陣列差集計算:從 O(N²) 雙層循環到 O(N) HashSet 實戰優化
問題場景 給定兩個字串陣列 str1、str2,需分別輸出: 在 str1 中但不在 str2 中的元素 在 str2 中但不在 str1 中的元素
C 語言生成不重複隨機序列:從朴素拒絕採樣到 Fisher-Yates 洗牌演算法
問題背景 需要在範圍 [0, N-1] 內生成一個**均勻隨機、無重複**的整數排列。朴素做法:rand() % N 後檢查是否已存在,重複則重試。但當已選取數
C 語言統計單詞長度與字元頻率:直方圖實現完解析(K&R 習題精講)
緣起:K&R 經典習題 《C 程序設計語言》(K&R)第 1 章習題要求: 編寫程序,打印輸入中**單詞長度**的直方圖。 編寫程序,打印輸入中**各
Windows 平台編譯 libmemcached 完整實戰指南(MinGW + 修改 configure + 解決符號衝突)
背景與挑戰 libmemcached 是 C/C++ 訪問 Memcached 叢集的標準客戶端庫,官方主要針對 Linux 發布。在 Windows 上使用
字串查找經典問題:在母串中尋找子串任意排列的首次出現位置
問題描述 給定一個母串 M 和一個子串 S。要求找出 S 的任意排列(即所有字元的全排列) 在 M 中首次出現的起始索引。若不存在,返回 -1。 範例: M =
Qt 實現 QTreeWidget 右鍵選單完整教程:從信號槽到動態菜單
場景與目標 在 Qt 應用中,為 QTreeWidget(或任意 QWidget 子類)添加右鍵上下文選單是常見需求。本文將完整演示: 啟用自定義上下文選
C/C++ 中 BOOL 與 bool 的本質區別與避坑指南
引言 在 Windows 平台開發中,BOOL(大寫)與 bool(小寫)並存已久。許多開發者將它們視為同義詞,實則兩者在類型系統、記憶體佈局、取值規則上存在顯
C語言中 exit 與 return 的關鍵差異詳解
前言 在 C 語言程式設計中,exit 與 return 雖然都涉及「離開」或「返回」的動作,但它們作用的層級、影響的範圍以及底層機制卻截然不同。混淆兩者容易導
《C 與指標》核心筆記精華:從輸入處理到動態記憶體
前言 《C and Pointers》是 C 語言進階經典。本文提煉書中關鍵知識點,涵蓋輸入處理、字符編碼、指針聲明、const 語義、表達式求值、指針運算、數
C 標準庫 I/O 錯誤處理:errno、perror 與 strerror 完全指南
錯誤報告機制概覽 C 標準庫函數失敗時,通常返回特殊值(如 NULL、-1、EOF),並將錯誤代碼存入全局變量 errno。errno 定義於 <errn
組合生成算法:遞歸實現 n 選 k 的所有組合
問題定義 給定 n 個互不相同元素,求所有選取 k 個元素的組合(順序無關)。例如 {1,2,3,4} 選 2:{1,2}, {1,3}, {1,4}, {2,
基數排序(LSD)原理與支援負數的 C 實現
算法核心 基數排序(Radix Sort)是非比較型整數排序,按「個位→十位→百位…」依次穩定排序。關鍵在於穩定性:同一位數相同元素,相對順序保持上一輪結果。
二叉搜尋樹刪除節點完整指南(下):前驅節點替換與普通節點刪除
接續上篇:根節點左右子樹皆存之複雜情況 上篇處理了左子樹最大節點即為左孩子的簡單情況。本篇解決「左子樹最大節點位於左子樹深處」的一般情況,並引入遞歸輔助函數統一
二叉搜尋樹刪除節點完整指南(上):從參數檢查到根節點刪除
前言 二叉搜尋樹(BST)的刪除操作比插入複雜得多,因為必須處理多種情況並維持樹的有序性質。本文採用「邊寫代碼、邊寫測試」的增量式開發方式,逐步實現一個健壯的刪
循序漸進實作演算法:二元搜尋樹節點插入詳解
前言 二元搜尋樹(BST)的節點插入是資料結構中的基礎操作。雖然邏輯單純,但涉及指標操作、遞歸與迭代選擇、以及測試驅動開發(TDD)的實踐。本文將一步步拆解插入