使用最小花费爬楼梯


使用最小花费爬楼梯

题目

1
2
3
4
给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用 一旦你支付此费用,即可选择向上爬一个或者两个台阶 

你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯
请你计算并返回达到楼梯顶部的最低花费

解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
思路:
台阶cost = 前两个cost的的历史花费+cost的较小值

代码1:
/**
* @param Integer[] $cost
* @return Integer
*/
function minCostClimbingStairs($cost)
{
$count = count($cost);

// 范围到顶部
for ($i = 2; $i <= $count; $i++) {
$cost[$i] += min($cost[$i - 1], $cost[$i - 2]);
}

return array_pop($cost);
}

代码2:
/**
* @param Integer[] $cost
*
* @return Integer
*/
function minCostClimbingStairs($cost)
{
$count = count($cost);

$curr = 0;
$prev = 0;
for ($i = 2; $i <= $count; $i++) {
$next = min($curr + $cost[$i - 1], $prev + $cost[$i - 2]);

$prev = $curr;
$curr = $next;
}

return $curr;
}