D28|买卖股票的最佳时机+跳跃游戏

news/2024/7/2 23:13:25

122.买卖股票的最佳时机 II

初始思路:

        这道题解题的时候比较像在找规律,发现只要计算这个过程中的两数之差然后相加即可。

题解复盘:

        可以更加清晰的发现如何从题意中获得贪心的思路。

        如何贪心:局部最优:收集每天的正利润,全局最优:求得最大利润

        

// 贪心思路
class Solution {
    public int maxProfit(int[] prices) {
        int result = 0;
        for (int i = 1; i < prices.length; i++) {
            result += Math.max(prices[i] - prices[i - 1], 0);
        }
        return result;
    }
}

55.跳跃游戏

初始思路:

        感觉在这个过程中只要每一个数都大于等于1的话是一定可以到达最后一个格子的,关键在于对出现0格子的处理,难以处理。

题解复盘:

        怎么跳跃不重要,关键在于覆盖范围

        贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点。

        覆盖范围 = i+nums[i].

        i 每次移动只能在 cover 的范围内移动,每移动一个元素,cover 得到该元素数值(新的覆盖范围)的补充,让 i 继续移动下去。 

class Solution {
    public boolean canJump(int[] nums) {
       int cover = 0;
       if(nums.length==1){return true;}
       for(int i = 0;i<=cover;i++){
           cover = Math.max(cover,i+nums[i]);
           if(cover >= nums.length-1){return true;}
       }
       return false;
    }
}

        注意for循环中一定是cover而不是nums.length! 

        不然对于这种情况,i就会遍历到数组的最后一个元素4,此时i+nums[i] = 8也大于等于nums.length-1,之前对于结果的输出限制就不起作用了。


45.跳跃游戏||

初始思路&&题解复盘:

        不得不说这个思路是真的挺难想的;

        贪心的思路,局部最优:当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最少步数。

        要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最少步数!

        具体实现就是在当前覆盖范围走到尽头时,如果还没有走到终点,就更新下一个覆盖范围,并且更新result,如果走到终点就进行一个break。

class Solution {
    public int jump(int[] nums) {
        if(nums.length==1){return 0;}
        int cover = 0;
        int next = 0;
        int count = 0;
        for(int i = 0;i<nums.length;i++){
            
            next= Math.max(next,i+nums[i]);
            if(cover>=nums.length-1){break;}
            if(i==cover){
                
                if(cover<nums.length-1){
                    count++;
                    cover = next;
                }
                
            }
            
        }
        return count;

    }
}


http://lihuaxi.xjx100.cn/news/1883036.html

相关文章

PPP协议概述与实验示例

PPP协议概述与实验示例 概述 PPP&#xff08;Point-to-Point Protocol&#xff09;是一种用于在点对点连接上传输多协议数据包的标准方法。它已经成为最广泛使用的互联网接入数据链路层协议&#xff0c;可以与各种技术结合&#xff0c;如ADSL、LAN等&#xff0c;实现宽带接入…

TCP 和 UDP 区别? 2、TCP/IP 协议涉及哪几层架构? 3、描述下 TCP 连接 4 次挥手的过程?为什么要 4 次挥手?

文章目录 1、TCP 和 UDP 区别&#xff1f;2、TCP/IP 协议涉及哪几层架构&#xff1f;3、描述下 TCP 连接 4 次挥手的过程&#xff1f;为什么要 4 次挥手&#xff1f;4、计算机插上电源操作系统做了什么&#xff1f;5、Linux 操作系统设备文件有哪些&#xff1f; 1、TCP 和 UDP …

选项式API和组合式API

简介 Vue 3支持选项式API和组合式API。其中&#xff0c;选项式API是从Vue 2开始使用的一种写法&#xff0c;而Vue 3新增了组合式API的写法。 选项式API 选项式API是一种通过包含多个选项的对象来描述组件逻辑的API&#xff0c;其常用的选项包括data、methods、computed、watch…

人工智能在安全领域的应用

ChatGPT 等 AI 应用在网络安全领域的应用效果明显&#xff0c;其自动编程能力、分析能力及自身集成的知识库能够帮助网络安全从业者提升工作效率&#xff0c;改进组织的网络安全计划。 &#xff08;一&#xff09;代码生成与检测能力 可用于开发漏洞挖掘工具。如目前可以利用…

事业编《综应 综合知识应用能力 综合应用》笔记

文章目录&#xff1a; 一&#xff1a;归纳概况题 二&#xff1a;对策措施题 三&#xff1a;综合分析题 四&#xff1a;公文写作题 五&#xff1a;事务处理题 六&#xff1a;案例分析题 1.问题类 2.原因类 3.影响类 4.场景方案类 七&#xff1a;材料作文题 八&#…

麒麟系统10s无法登录问题分析报告

概述 10S 4.0.2-sp4反馈系统无法登录。提示密码错误 分析 怀疑用户密码错误&#xff0c;添加consoletty0&#xff0c;init/bin/bash进单用户修改密码后 故障依旧 排除密码错误怀疑密码文件权限问题导致的密码未修改成功 查看/etc/shadow 相关文件是否进行修改 未见明显异常…

python爬取中南林绩点

1.当我们进入vpn网站的时候会有安全隐私提示我们要让程序可以自己点击&#xff0c;使进入到登录页面 图1 2.查看高级按钮的定位信息&#xff0c;我们可以通过id属性定位 #点击安全设置 browser.find_element(By.ID,"details-button").click() 3.我们需要点击继续访问…

字符串字符匹配

判断短字符串S中的所有字符是否在长字符串T中全部出现。 数据范围: 1≤len(S),len(T)≤200 进阶&#xff1a;时间复杂度&#xff1a;O(n) &#xff0c;空间复杂度&#xff1a;O(n) 输入描述&#xff1a;输入两个字符串。第一个为短字符串&#xff0c;第二个为长字符串。两个字符…