509 斐波那契数
https://leetcode.cn/problems/fibonacci-number/description/
class Solution {
public int fib(int n) {
if (n == 0) return 0; //bug corner case;
int a = 0, b = 1;
for (int i = 2; i <= n; i++) {
int f = a + b;
a = b;
b = f;
}
return b;
}
}
70 爬楼梯
https://leetcode.cn/problems/climbing-stairs/description/
和上一题的区别只是=0的初值不一样。
class Solution {
public int climbStairs(int n) {
if (n <= 1) return n;
int a = 1, b = 1;
for (int i = 2; i <= n; i++) {
int c = a + b;
a = b;
b = c;
}
return b;
}
}
746 使用最小花费爬楼梯
https://leetcode.cn/problems/min-cost-climbing-stairs/
上到 cost[len - 1]的上一层没有floor自身的cost,所以最后一步可能是n-2那级的cost也可能是n-1那级的cost,两者取小。
class Solution {
public int minCostClimbingStairs(int[] cost) {
int a = cost[0], b = cost[1];
for (int i = 2; i <= cost.length - 1; i++) {
int c = Math.min(a, b) + cost[i];
a = b;
b = c;
}
return Math.min(a, b);
}
}