LeetCode 188:買賣股票最佳時機 IV - 通用 DP 與貪心優化
LeetCode 188:買賣股票最佳時機 IV - 通用 DP 與貪心優化 最多完成 k 筆交易。k 很大時退化為無限次交易(LeetCode 122)。
LeetCode 24:兩兩交換鏈表節點 - 遞歸與迭代雙解法
LeetCode 24:兩兩交換鏈表節點 - 遞歸與迭代雙解法 給定鏈表,每相鄰兩個節點交換位置,返回新頭節點。要求 O(1) 空間,只修改節點指針不修改值。
LeetCode 122:買賣股票最佳時機 II - 貪心累加所有上漲段
LeetCode 122:買賣股票最佳時機 II - 貪心累加所有上漲段 給定價格數組,可完成任意次交易(賣出後才能買入),求最大利潤。等價於累加所有上漲段差值
0-1 背包變體:湊單方案數計數(模 M)與多重背包模板匯總
0-1 背包變體:湊單方案數計數(模 M)與多重背包模板匯總 問題:N 種商品,第 i 種有 a[i] 件。選恰好 m 件湊單,求方案數模 M。同種商品不區分順
完全背包問題:動態規劃 O(VN) 優化與 C++ 完整實現
完全背包問題:動態規劃 O(VN) 優化與 C++ 完整實現 有 N 種物品,每種無限件。物品 i 價值 v[i]、重量 c[i]。背包容量 V,求最大價值。
Java 數組基礎:聲明、初始化、長度獲取與常見錯誤
Java 數組基礎:聲明、初始化、長度獲取與常見錯誤 數組是固定長度、同類型元素的有序集合。Java 中數組是對象,繼承自 Object,存儲在堆上。 聲明與
Java substring 截取字符串:按分隔符獲取最後一段並去除擴展名
Java substring 截取字符串:按分隔符獲取最後一段並去除擴展名 常見需求:從 URI/路徑中提取文件名(不含擴展名)。例如 /api/user/pr
LESS 入門:動態樣式語言核心特性與中文教程
LESS 入門:動態樣式語言核心特性與中文教程 LESS 是一種 CSS 預處理器,賦予 CSS 動態語言特性:變量、混入、嵌套、運算、函數。可在客戶端(瀏覽器
abs() 函數陷阱:最小負數溢出導致返回負值
abs() 函數陷阱:最小負數溢出導致返回負值 C/C++ 標準庫 abs(int) 在參數為 INT_MIN(-2147483648)時,返回值仍為 INT_
VC++ 文件操作完全指南:CArchive、CStdioFile、臨時文件與 SDK 函數
VC++ 文件操作完全指南:CArchive、CStdioFile、臨時文件與 SDK 函數 MFC 提供多層文件操作封裝:CFile 底層、CArchive
C++ 模板名稱衝突:避免與標準庫函數同名(以 max 為例)
C++ 模板名稱衝突:避免與標準庫函數同名(以 max 為例) 定義模板函數 max 會與 <algorithm> 中的 std::max 產生名稱
LeetCode 123:買賣股票最佳時機 III - 動態規劃雙向掃描
LeetCode 123:買賣股票最佳時機 III - 動態規劃雙向掃描 給定價格數組 prices,最多完成兩筆交易(買入→賣出算一筆),求最大利潤。不能同時
LeetCode 23:合併 K 個有序鏈表 - 分治與堆優化對比
LeetCode 23:合併 K 個有序鏈表 - 分治與堆優化對比 給定 K 個升序鏈表,合併為一個升序鏈表。分析時間空間複雜度。 解法一:分治法(原文代碼,
C語言前綴++與後綴++深度解析:副作用、序列點與未定義行為
C語言前綴++與後綴++深度解析:副作用、序列點與未定義行為 C/C++ 中 ++i(前綴)與 i++(後綴)的區別不僅在於返回值,更涉及副作用發生時機、序列點
LeetCode 27:移除元素 - 雙指針原地覆蓋與擴展
LeetCode 27:移除元素 - 雙指針原地覆蓋與擴展 給定數組 nums 和值 val,原地移除所有等於 val 的元素,返回新長度。元素順序可改變,不關
LeetCode 91:解碼方法 - 動態規劃與常數空間優化
LeetCode 91:解碼方法 - 動態規劃與常數空間優化 數字串 s 按 A→1 ... Z→26 映射,求解碼方式總數。0 不能單獨解碼,只能作為 10
LeetCode 26:刪除有序數組重複項 - 雙指針原地覆蓋
LeetCode 26:刪除有序數組重複項 - 雙指針原地覆蓋 給定非遞減數組 nums,原地刪除重複元素使每個元素僅出現一次,返回新長度。要求 O(1) 額外
LeetCode 160:相交鏈表 - 雙指針長度對齊法
LeetCode 160:相交鏈表 - 雙指針長度對齊法 給定兩個單鏈表頭節點 headA、headB,找到它們的相交起始節點(引用相同,非值相同)。無相交返回