• Day32——122.买卖股票的最佳时机II 55. 跳跃游戏 45.跳跃游戏II +第二天复习


    赶上进度,冲冲冲

    目录

    前言

    一、买卖股票的最佳时机II

    二、跳跃游戏

    解题思路:

    三、跳跃游戏||

    总结



    前言

    生命能与世俗相契合,才能不朽,生命的整体是象征的,因为他是有意义的.

                                                                                                                    ——《日瓦戈医生》


    一、买卖股票的最佳时机II

    力扣

    给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。

    在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。

    返回 你能获得的 最大 利润 。

    解题思路:

    我一开始是这么想的,我怎么才能让它知道,什么时候该买什么时候该卖呢,我知道全局来算肯定简单,它不知道,我要怎么告诉它,太难了!看答案hhh

    but,我们不需要告诉它,我们知道就行,只要我们拆开,把没两天的差值(利润)都算出来,只拿正收入不就行了嘛。因为你在那里同一天卖了在买,到下一天卖,其实就等于是分散的。

    1. class Solution {
    2. public:
    3. int maxProfit(vector<int>& prices) {
    4. int sum=0;
    5. for(int i=0;isize()-1;i++)
    6. {
    7. if(prices[i+1]-prices[i]>0) //只要正收入
    8. {
    9. sum+=prices[i+1]-prices[i];
    10. }
    11. }
    12. return sum;
    13. }
    14. };

    二、跳跃游戏

    力扣

    解题思路:

    我们用覆盖范围来做,只要覆盖到了终点就行了。

    1. class Solution {
    2. public:
    3. bool canJump(vector<int>& nums) {
    4. if(nums.size()==1)
    5. {
    6. return true;
    7. }
    8. int disance=0;
    9. for(int i=0;i<=disance;i++) //重点,我们只在已经覆盖的区域里遍历,因为我们跳不出去
    10. {
    11. disance=max(disance,nums[i]+i); //取最大的
    12. if(disance>=nums.size()-1)
    13. {
    14. return true;
    15. }
    16. }
    17. return false;
    18. }
    19. };

    三、跳跃游戏||

    和上一题非常像,也是用范围覆盖来求,只不过因为要计算步骤,所以复杂一点。

    1. class Solution {
    2. public:
    3. int jump(vector<int>& nums) {
    4. if(nums.size()==1)
    5. {
    6. return 0;
    7. }
    8. int curindance=0; //上一个距离
    9. int nextindance=0; //下一个距离
    10. int ans=0; //步数
    11. for(int i=0;isize();i++)
    12. {
    13. nextindance=max(nextindance,i+nums[i]); //更新最大覆盖范围
    14. if(i==curindance) //如果已经走到尽头了,在覆盖范围内选下一个覆盖范围
    15. {
    16. if(curindance!=nums.size()-1) //还没到终点
    17. {
    18. curindance=nextindance; //跳一步,扩大范围
    19. ans++;
    20. if(nextindance>=nums.size()-1) //找到了
    21. {
    22. break;
    23. }
    24. }
    25. else
    26. {
    27. break;
    28. }
    29. }
    30. }
    31. return ans;
    32. }
    33. };

    第二天复习:

    1、先排序,两边就是最大的,然后双指针,平方,取最大的,最后再反转

    2、滑动窗口,注意双指针移动

    3、螺旋数组,感觉难


    总结

    复习,迷茫了。

  • 相关阅读:
    (Mysql高级语句(进阶查询语句+数据库函数+连接查询))
    架构案例2022(四十二)
    Eclipse开源代码下载
    一文了解 Java 中的构造器
    Google guava之Multimap简介说明
    centos7 环境安装 PM2 管理 node
    NC13585 安卓图案解锁
    CORS 跨域访问, 实现跨域的原理, CORS漏洞利用
    Mac下,protoc-gen-go-grpc: program not found or is not executable问题的解决
    计算机毕业论文java毕业设计论文题目springboot ssm框架项目源代码实现的学生就业信息管理(spring boot+layui)[包运行成功]
  • 原文地址:https://blog.csdn.net/m0_72503424/article/details/127824181