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

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

前言


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


                                                                                     ——《日瓦戈医生》

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


力扣

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

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

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

解题思路:

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

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

class Solution {
public:
    int maxProfit(vector<int>& prices) {
        int sum=0;
        for(int i=0;i<prices.size()-1;i++)
        {
            if(prices[i+1]-prices[i]>0)        //只要正收入
            {
                sum+=prices[i+1]-prices[i];
            }
        }
        return sum;
    }
};

二、跳跃游戏


力扣

解题思路:

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

class Solution {
public:
    bool canJump(vector<int>& nums) {
        if(nums.size()==1)
        {
            return true;
        }
        int disance=0;
        for(int i=0;i<=disance;i++)    //重点,我们只在已经覆盖的区域里遍历,因为我们跳不出去
        {
            disance=max(disance,nums[i]+i);    //取最大的
            if(disance>=nums.size()-1)        
            {
                return true;
            }
        }
        return false;
    }
};

三、跳跃游戏||


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

class Solution {
public:
    int jump(vector<int>& nums) {
        if(nums.size()==1)
        {
            return 0;
        }
        int curindance=0;        //上一个距离
        int nextindance=0;        //下一个距离
        int ans=0;            //步数
        for(int i=0;i<nums.size();i++)
        {
            nextindance=max(nextindance,i+nums[i]);        //更新最大覆盖范围
            if(i==curindance)          //如果已经走到尽头了,在覆盖范围内选下一个覆盖范围
            {
                if(curindance!=nums.size()-1)        //还没到终点
                {
                    curindance=nextindance;        //跳一步,扩大范围
                    ans++;
                    if(nextindance>=nums.size()-1)    //找到了
                    {
                        break;
                    }
                }
                else
                {
                    break;
                }
            }
        }
        return ans;
    }
};

第二天复习:


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

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

3、螺旋数组,感觉难

总结


复习,迷茫了。

相关文章
|
SQL Java 数据库连接
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
【1月更文挑战第3天】 一、核心配置文件详解 二、默认的类型别名 三、MyBatis的增删改查 四、MyBatis获取参数值的两种方式 1、单个字面量类型的参数 2、多个字面量类型的参数 3、map集合类型的参数 4、实体类类型的参数 5、使用@Param标识参数
359 2
Mybatis之核心配置文件详解、默认类型别名、Mybatis获取参数值的两种方式
|
机器学习/深度学习 数据采集 人工智能
智能化运维在企业IT管理中的应用与实践####
本文深入探讨了智能化运维(AIOps)的核心技术原理,通过对比传统运维模式,揭示了AIOps如何利用大数据、机器学习等先进技术提升故障预测准确性、优化资源分配及自动化处理流程。同时,文章详细阐述了智能化运维平台的实施步骤,包括数据收集与分析、模型训练与部署、以及持续监控与优化,旨在为企业IT部门提供一套切实可行的智能化转型路径。最后,通过几个典型应用案例,如某大型电商平台的智能告警系统和金融企业的自动化故障排查流程,直观展示了智能化运维在实际业务场景中的显著成效,强调了其在提升运维效率、降低运营成本方面的关键作用。 ####
335 4
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
1439 0
|
JavaScript 前端开发 安全
【JavaScript 】DOM操作快速入门
【JavaScript 】DOM操作快速入门
443 2
|
消息中间件 Java Kafka
MQ产品使用合集之对于Kafka作为数据源的情况,官方比较推荐哪种使用方式
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
184 0
|
安全 网络安全 网络协议
2024年甘肃省职业院校技能大赛信息安全管理与评估 样题二 理论题
2024年甘肃省职业院校技能大赛信息安全管理与评估 样题二 理论题
|
编解码 移动开发
MATLAB | SCI 绘图配色第八期 | 散点图 2x1 | 大鱼海棠
MATLAB | SCI 绘图配色第八期 | 散点图 2x1 | 大鱼海棠
274 0
|
机器学习/深度学习 文字识别 并行计算
GitHub 车牌检测识别项目调研
GitHub 车牌检测识别项目调研
723 0
|
数据可视化 数据挖掘 开发工具
低代码是什么意思
此前,阿里云智能总裁张建锋曾在钉钉发布会上表示:“未来的软件开发一定是碎片化的,低代码开发将成为未来几年的行业关键词。”这句话表明了低代码在过去两年的火爆程度,预示着低代码有望成为软件领域的新风口。
低代码是什么意思