Skip to content

746. 使用最小花费爬楼梯

Published: at 00:08

爬楼梯,从右往左看,f(n) 表示从低 n 节开始时消耗的最少体力。

impl Solution {
pub fn min_cost_climbing_stairs(cost: Vec<i32>) -> i32 {
// f(n) = cost[n] + min(f(n+1), f(n+2))
let mut arr = vec![0; cost.len() + 1];
arr[cost.len()] = 0;
arr[cost.len() - 1] = cost[cost.len() - 1];
arr[cost.len() - 2] = cost[cost.len() - 1].min(cost[cost.len() - 2]);
for i in (0..(cost.len() - 1)).rev() {
arr[i] = cost[i] + arr[i+1].min(arr[i+2]);
}
arr[0].min(arr[1])
}
}

节省内存的话用三个变量就行,之后可以写一下。


Previous Post
1137. 第 N 个泰波那契数
Next Post
198. 打家劫舍