代码随想录算法训练营29期Day38|LeetCode 509,70,746

 文档讲解:动态规划理论基础  斐波那契数  爬楼梯  使用最小花费爬楼梯

509.斐波那契数

题目链接:https://leetcode.cn/problems/fibonacci-number/description/

思路:

        当前这个数由上一个数和上上个数推导而来。所以我们每次记录两个数,用来推导下一个就行了。遍历顺序从2到n,当n小于等于2时可直接输出结果。

核心代码:

class Solution {
public:
    int fib(int n) {
        if(n<=1) return n;
        int a,b,c;
        a=0;b=1;
        for(int i=2;i<=n;i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
};

70.爬楼梯

题目链接:https://leetcode.cn/problems/climbing-stairs/description/

思路:

        我们考虑到达第n阶的方法,由于每次只能上一阶或者两阶,因此第n阶只能由第n-1阶或第n-2阶到达,即到达第n阶的方法 = 到达第n-2阶的方法 + 到达第n-1阶的方法。

        写成方程即 dp[i]=dp[i-2]+dp[i-1];

        从方程我们知道求当前的数要用到之前的两个数字,所以我们从0遍历到n。由于我们每次只用到两个数字,因此开两个变量记录即可。

核心代码:

class Solution {
public:
    int climbStairs(int n) {
        if(n<=2) return n;
        int a,b,c;
        a=1;b=2;
        for(int i=3;i<=n;i++){
            c=a+b;
            a=b;
            b=c;
        }
        return c;
    }
};

746.使用最小花费爬楼梯

题目链接:https://leetcode.cn/problems/min-cost-climbing-stairs/description/

思路:

        我们考虑到达第n阶的方法,由于每次只能上一阶或者两阶,因此第n阶只能由第n-1阶或第n-2阶到达,即到达第n阶的最小花费 = min( 到达第n-2阶的最小花费+cost[n-2] , 到达第n-1阶的最小花费+cost[n-1] )。

        写成方程即 dp[i] = min( dp[i-2]+cost[i-2] , dp[i-1]+cost[i-1] );

        从方程我们知道求当前的数要用到之前的两个数字,所以我们从0遍历到n。由于我们每次只用到两个数字,因此开两个变量记录即可。

核心代码:

class Solution {
public:
    int minCostClimbingStairs(vector<int>& cost) {
        int n=cost.size();
        int a,b,c;
        a=b=0;
        for(int i=2;i<=n;i++){
            c=min(a+cost[i-2],b+cost[i-1]);
            a=b;
            b=c;
        }
        return c;
    }
};

今日总结

        今日学习时长1h,今天题目挺简单的,没花什么时间,接着去忙其他工作。

相关推荐

  1. 代码随想算法训练29Day27|LeetCode 39,40,131

    2024-02-07 21:46:03       58 阅读
  2. 代码随想算法训练29Day30|LeetCode 332,51,37

    2024-02-07 21:46:03       56 阅读
  3. 代码随想算法训练29Day38|LeetCode 509,70,746

    2024-02-07 21:46:03       53 阅读
  4. 代码随想算法训练29Day32|LeetCode 122,55,45

    2024-02-07 21:46:03       62 阅读
  5. 代码随想算法训练29Day31|LeetCode 455,376,53

    2024-02-07 21:46:03       62 阅读
  6. 代码随想算法训练29Day37|LeetCode 738,968

    2024-02-07 21:46:03       61 阅读
  7. 代码随想算法训练29Day20|LeetCode 654,617,700,98

    2024-02-07 21:46:03       60 阅读
  8. 代码随想算法训练29Day23|LeetCode 669,108,538

    2024-02-07 21:46:03       59 阅读
  9. 代码随想算法训练29Day25|LeetCode 216,17

    2024-02-07 21:46:03       58 阅读
  10. 代码随想算法训练29Day29|LeetCode 491,46,47

    2024-02-07 21:46:03       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-07 21:46:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-07 21:46:03       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-07 21:46:03       82 阅读
  4. Python语言-面向对象

    2024-02-07 21:46:03       91 阅读

热门阅读

  1. LabVIEW高精度主动模拟肺系统的开发与应用

    2024-02-07 21:46:03       55 阅读
  2. c++ system解释

    2024-02-07 21:46:03       52 阅读
  3. 安装flash-attention失败的终极解决方案

    2024-02-07 21:46:03       48 阅读
  4. Docker面试题2024

    2024-02-07 21:46:03       41 阅读
  5. SpringBoot整合Quartz

    2024-02-07 21:46:03       51 阅读
  6. 进程基础(命令的基石)

    2024-02-07 21:46:03       37 阅读