Bootstrap

1.14从斐波那契数开始

509. 斐波那契数

class Solution {
    public int fib(int n) {
        if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }
        return fib(n-2)+fib(n-1);
    }
}

70. 爬楼梯

找规律

class Solution {
    /**
    有点类似找规律!!
    dp[i]:到达第i个阶梯需要的步数
    dp[i] = dp[i-1]+dp[i-2];
     */
    public int climbStairs(int n) {
        //为了让代码更好看点,我们设置一个不存在的dp[0]
       int[] dp = new int[n+1];
       dp[1] = 1;
       dp[0] =1;
       if(n <2){
        return dp[n];
       }
       for(int i =2;i<=n;i++){
        dp[i] = dp[i-1]+dp[i-2];
       }
       return dp[n];
    }
}

746.使用最小花费爬楼梯

dp[i-1] 跳到dp[i] 需要花费cost[i-1],这是最重要的

/**
取花费的最小值就行
 */
class Solution {
    public int minCostClimbingStairs(int[] cost) {
        int n = cost.length;
        int[] dp =new int[n+1];
        //开始都为0
        dp[0] = 0;
        dp[1] = 0;
        //dp[i-1] 跳到dp[i] 需要花费cost[i-1]
        for(int i =2;i<=cost.length;i++){
            dp[i] = Math.min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]);
        }
        return dp[n];
    }
}
;