上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

代码随想录算法训练营第三十六天|509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

guduadmin281月前

509. 斐波那契数

public static int fib(int n) {
    // 找出最后一步
    // 定义损失函数 定义记忆化存储基本单元
    // 状态转移方程 f(n) = f(n-2)+f(n-1); n > 0
    // 边界 (递归过程中需要判断)
    // 初始化 (在未递归之前需要处理)
    // 返回答案
    if (n == 0) {
        return 0;
    }
    if (n == 1) {
        return 1;
    }
    int[] dp = new int[n];
    dp[0] = 0;
    dp[1] = 1;
    for (int i = 2; i < n; i++) {
        findFibonacci(i, dp);
    }
    return dp[n - 1] + dp[n - 2];
}
public static void findFibonacci(int n, int[] dp) {
    dp[n] = dp[n - 1] + dp[n - 2];
}

70. 爬楼梯 

public static int climbStairs(int n) {
    //找出最后一步
    //定义损失函数 定义记忆化存储基本单元
    //状态转移方程 f(n) = f(n-2)+2; n > 0
    // f(n) = f(n-1)+1; n > 0
    //边界 (递归过程中需要判断)
    //初始化 (在未递归之前需要处理)
    //返回答案
    if (n == 0) {
        return 0;
    }
    if (n == 1) {
        return 1;
    }
    if (n == 2) {
        return 2;
    }
    int[] dp = new int[n];
    dp[0] = 0;
    dp[1] = 1;
    dp[2] = 2;
    for (int i = 3; i < n; i++) {
        climbStair(i, dp);
    }
    return dp[n - 1] + dp[n - 2];
}
public static void climbStair(int n, int[] dp) {
    dp[n] = dp[n - 1] + dp[n - 2];
}

746. 使用最小花费爬楼梯

public static int minCostClimbingStairs(int[] cost) {
    int stairCase = cost.length + 1;
    // 找出最后一步
    // 定义损失函数 定义记忆化存储基本单元
    // 状态转移方程 f(n) = cost[n-1] > cost[n-2]?cost[n-2]:cost[n-1] n>2
    // f(n) = f(n-1)+1; n > 0
    // 边界 (递归过程中需要判断)
    // 初始化 (在未递归之前需要处理)
    // 返回答案
    if (stairCase == 1) {
        return 0;
    }
    if (stairCase == 2) {
        return cost[0];
    }
    int[] dp = new int[cost.length + 2];
    dp[0] = 0;
    dp[1] = 0;
    dp[2] = 0;
    for (int i = 3; i < dp.length; i++) {
        costClimbingStairs(dp, cost, i);
    }
    return dp[dp.length - 1];
}
public static void costClimbingStairs(int[] dp, int[] cost, int index) {
    if (dp[index - 1] + cost[index - 2] <= dp[index - 2] + cost[index - 3]) {
        dp[index] = dp[index - 1] + cost[index - 2];
    } else {
        dp[index] = dp[index - 2] + cost[index - 3];
    }
}

网友评论

搜索
最新文章
热门文章
热门标签
 
 做梦梦到死人了是什么意思  梦见自己头发短了换发型啦  女人梦见头发被剪短剪坏了