C++ STL 入門:map 關聯容器完整指南——構造、插入、查找、刪除與排序
map 概覽 std::map<Key, Value> 是基於紅黑樹實現的有序關聯容器,鍵唯一、按 operator< 自動排序,查找/插入/
C++ RTTI 機制:typeid 運算符獲取數據類型信息詳解
RTTI 簡介 RTTI(Run-Time Type Identification)允許程序在運行時確定對象的實際類型。C++ 提供兩大工具:dynamic_c
LeetCode 221:最大正方形——動態規劃求全 1 正方形最大面積
題目描述 給定二維 0-1 矩陣,找出只包含 1 的最大正方形,返回其面積。 DP 狀態定義 dp[i][j] 表示以 (i-1, j-1) 為右下角的全 1
HDU 3037 Saving Beans:組合數學與 Lucas 定理求模質數組合數
題目轉化 將不超過 m 顆相同豆子放入 n 棵不同樹中。引入虛擬第 n+1 棵樹存放「未使用的豆子」,問題等價於:將 m 顆豆子放入 n+1 棵樹(允許為空)。
LeetCode 216:組合總和 III——DFS 回溯尋找 k 個數之和為 n
題目描述 從 1 到 9 中選出 k 個互不相同的數字,使其和等於 n。返回所有可能的組合,組合內數字遞增,組合間無序。 回溯策略 遞歸參數:當前組合 pa
C++ 基礎知識回顧:構造函數、析構函數與常引用詳解
一、構造函數與析構函數 構造函數在創建對象時自動調用,用於初始化成員;析構函數在對象銷毀時自動調用,釋放資源。兩者均無返回值,名字分別為類名與 ~類名。 示例
CodeForces 545C Woodcutters:貪心策略最大化砍伐樹木數量
題目大意 有 n 棵樹,第 i 棵位於座標 x[i],高度 h[i]。樹可向左倒(佔用 [x[i]-h[i], x[i]])或向右倒(佔用 [x[i], x[i
CodeForces 545A:矩陣碰撞判斷完好車輛
題目大意 給定 n×n 矩陣,對角線為 -1(自身不碰撞)。0 表示無碰撞,1 表示第 i 輛車(行)被撞壞,2 表示第 j 輛車(列)被撞壞,3 表示雙方都壞
LeetCode 19:刪除鏈表的倒數第 N 個節點——雙指針單次遍歷解法
題目描述 給定單鏈表頭節點,刪除倒數第 n 個節點並返回新頭節點。n 保證合法。要求單次遍歷完成。 雙指針技巧 使用 fast、slow 兩指針: fast
LeetCode 141:環形鏈表——快慢指針判斷鏈表是否有環
題目描述 給定單鏈表頭節點,判斷鏈表中是否存在環。要求 O(1) 空間複雜度。 Floyd 判圈算法(快慢指針) 快指針 fast 每次移動 2 步,慢指針
CodeForces 545D Queue:排序貪心策略解決失望人數最小化
題目大意 有 n 人排隊,每人有一個最大等待時間 a[i]。若某人前面所有人的等待時間總和超過其 a[i],該人會失望。可重新排序隊列,求最多有多少人不失望。
LeetCode 142:環形鏈表 II——尋找環入口節點的快慢指針法
題目描述 給定單鏈表頭節點,若存在環,返回環的入口節點;否則返回 nullptr。要求 O(1) 額外空間。 數學推導 設鏈表頭到環入口距離為 X,環長度為
LeetCode 4:兩個有序數組的中位數——O(log(m+n)) 二分查找解法
題目描述 給定兩個已排序數組 nums1、nums2,長度分別為 m、n。找出這兩個數組合併後的中位數,要求時間複雜度 O(log(m+n))。 核心思路:轉
HDU 1896 Stones:優先隊列模擬石頭移動問題解析
題目大意 直線道路上有 n 顆石頭,每顆石頭有初始座標 codr 與投擲距離 dis。人從起點出發依次遇到石頭:遇到第奇數顆石頭,將其向前拋擲 dis 距離並放
Effective C++ 條款 28:避免返回對象內部的句柄——深入解析封裝與 const 正確性
前言 在 C++ 類設計中,「不要返回對象內部的句柄」是一條至關重要的準則。句柄包含引用、指標與迭代器。違反此規則會破壞封裝性、導致 const 成員函數失去語
Effective C++ 條款 27:最小化類型轉換——從 C 風格到 C++ 風格的演進
類型轉換的三種風格 風格語法評價 C 風格(T)expr功能過強(含 const_cast/reinterpret_cast
LeetCode 11. 盛最多水的容器:雙指針貪心證明與 O(n) 解法
題目描述 給定 n 個非負整數 height[i] 代表坐標點 (i, height[i]) 的垂直線。找出兩條線與 x 軸圍成的容器,使盛水量最大。容器面積
LeetCode 273. 整數轉英文單詞:分組處理與邊界情況完整攻略
題目要求 將非負整數(< 2³¹)轉為英文單詞表示。例:123 → One Hundred Twenty Three,12345 → Twelve Thousa