美文网首页
使用最小花费爬楼梯 ^.^ 2022/08/05

使用最小花费爬楼梯 ^.^ 2022/08/05

作者: 佛说子曰道道 | 来源:发表于2022-08-14 10:25 被阅读0次

    参见 https://leetcode.cn/problems/min-cost-climbing-stairs
    这道题的基础应该是:走到最顶层,每次可以走一步或者两步,一共有多少种走法?
    再基础一点应该是:斐波那契数列。
    是的,就是:a(n)=a(n-1)+a(n-2)。
    那么此外还需要做的就是记录一下花费,达到最小。所以变成了这样a(n)=Math.min(a(n-1),a(n-2))。但是这样可以么?这样直接就把a(n)覆盖了啊,还怎么往下走?
    所以走到了n,可以加上a(n),代表继续往下走。
    等到n>a.length,就是走到了尽头。

    返回值

    但是,返回值是哪个?
    这里我们可以想象有个虚拟的台阶,比如明面上只有99个,那么可以虚拟出第100个,这个才是真正的终点,而不是走到99就完成了。还记得我们在上面加上了a(n)嘛?是的,a(100)=Matn.min(a(99),a(98))。这就是最终的答案。

        public int minCostClimbingStairs(int[] cost) {
            for (int i = 2; i < cost.length; i++) {
                cost[i] = Math.min(cost[i - 1], cost[i - 2]) + cost[i];
            }
    //        再手动添加一个虚拟的台阶,也就是最后一阶
            return Math.min(cost[cost.length - 1], cost[cost.length - 2]);
        }
    

    相关文章

      网友评论

          本文标题:使用最小花费爬楼梯 ^.^ 2022/08/05

          本文链接:https://www.haomeiwen.com/subject/dtikgrtx.html