funcminCostClimbingStairs(cost []int)int{n :=len(cost)if n ==0{return0}if n ==1{return cost[0]}prevPrev, prev := cost[0], cost[1]for i :=2; i < n; i++{current := cost[i]+min(prev, prevPrev)prevPrev, prev = prev, current}returnmin(prev, prevPrev)}funcmin(a, b int)int{if a < b {return a}return b
}
二、算法分析
1. 核心思路
滾動數組優化:僅維護前兩個狀態值
狀態轉移方程:dp[i] = cost[i] + min(dp[i-1], dp[i-2])
邊界處理:
直接處理n=0和n=1的特殊情況
通過滾動變量避免O(n)空間復雜度
2. 關鍵步驟
初始化狀態:prevPrev=cost[0], prev=cost[1]
迭代計算:
計算當前臺階的最小花費
更新前兩個狀態值
結果返回:取最后兩個狀態的最小值
3. 復雜度
指標
值
說明
時間復雜度
O(n)
線性遍歷整個數組
空間復雜度
O(1)
僅使用三個臨時變量
三、圖解示例
四、邊界條件與擴展
1. 特殊場景驗證
空數組:返回0(題目約束通常不存在)
單臺階數組:直接返回cost[0]
兩臺階數組:取cost[0]和cost[1]較小值
大數測試:n=1000時仍能高效計算
2. 擴展應用
建筑成本優化:規劃多層建筑的最優建造路徑
游戲AI尋路:動態計算移動消耗最小的路徑
投資決策:多階段投資的最小成本路徑選擇
3. 多語言實現
classSolution{publicintminCostClimbingStairs(int[] cost){int n = cost.length;if(n ==1)return cost[0];int a = cost[0], b = cost[1];for(int i =2; i < n; i++){int c = cost[i]+Math.min(a, b);a = b;b = c;}returnMath.min(a, b);}}
1. 歐拉公式中的符號
歐拉公式 e i x cos ? x i sin ? x e^{ix}\cos xi\sin x eixcosxisinx當 x π x \pi xπ時 e i π 1 0 / / 歐拉恒等式 e^{i\:\pi}10 //歐拉恒等式 eiπ10//歐拉恒等式 e e e:自然對數的底 i i i:虛數, i 2 ? 1 i^2 -1 i2?1 cos…
在 HTML 郵件中設置背景圖片時,Outlook(尤其是桌面版的 Outlook for Windows)經常不會正確顯示背景圖,這是因為outlook 是使用 Word 作為郵件渲染引擎,而不是標準的 HTML/CSS 渲染方式。 推薦的解決方案:使…