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 渲染方式。 推荐的解决方案:使…