Day29 第八章 贪心算法 part02

devtools/2025/3/1 8:13:56/

一. 学习文章及资料

  • 122.买卖股票的最佳时机II
  • 55.跳跃游戏
  • 45.跳跃游戏II

二. 学习内容

1. 买卖股票的最佳时机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;}
}

2. 跳跃游戏

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

局部最优推出全局最优,找不出反例,试试贪心!

class Solution {public boolean canJump(int[] nums) {// 只有一个元素,就是能达到if(nums.length==1) return true;int far=0;// 注意这里是小于等于farfor(int i=0;i<=far;i++){far=Math.max(i+nums[i],far);// 说明可以覆盖到终点了if(far>=nums.length-1) return true;}return false;}
}

3. 跳跃游戏II

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

这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖

如果移动下标达到了当前这一步的最大覆盖最远距离了,还没有到终点的话,那么就必须再走一步来增加覆盖范围,直到覆盖范围覆盖了终点。

class Solution {public int jump(int[] nums) {int count=0;      //记录的步数int curDistant=0; //当前步数到达最远距离int nextDistant=0;//下一步数到达最远距离for(int i=0;i<nums.length;i++){nextDistant=Math.max(i+nums[i],nextDistant);if(nextDistant>=nums.length-1){ //如果下一步能到达终点count++; //说明再走一步就行了break;}if(i==curDistant){ //到达当前步数最远的地方还没到终点curDistant=nextDistant; //更新覆盖距离count++;}}return count;}
}


http://www.ppmy.cn/devtools/163560.html

相关文章

HTTP服务

一、HTTP协议介绍 http 应用层协议 超文本传输协议 作用&#xff1a; 构建网站服务器 在客户端和网站服务器传输文本数据&#xff0c;浏览器会将文本数据解析成对应的图片、视频进行展示 1、网站类型 静态网页 任何客户端在任何时候访问时看到的数据是一致的 *.html…

工业以太网的核心:数据链路层如何支撑智能制造与自动化

随着工业自动化的快速发展&#xff0c;工业以太网成为了支撑工业控制和通信系统的重要组成部分。为了保证工业网络中的数据能够高效、稳定地流动&#xff0c;数据链路层发挥着不可或缺的作用。在工业环境中&#xff0c;数据链路层不仅关乎设备间的通信质量&#xff0c;还直接影…

ModuleNotFoundError: No module named ‘tensorflow‘

ModuleNotFoundError: No module named ‘tensorflow‘ 欢迎联系博主——这里是赛博曹操https://bbs.csdn.net/topics/619568415 Anaconda安装TensorFlow 之后&#xff0c;通过Jupyter运行&#xff0c;出现错误 ImportError: No module named ‘tensorflow’. 解决办法就一句&a…

ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图

在地理信息系统&#xff08;GIS&#xff09;领域&#xff0c;地表覆盖图的矢量化是一项至关重要的任务。天地图作为中国国家级的地理信息服务平台&#xff0c;提供了丰富且详尽的地表覆盖数据。然而&#xff0c;这些数据通常以栅格格式存在&#xff0c;不利于进行空间分析和数据…

上位机知识篇---HTTPHTTPS等各种通信协议

文章目录 前言1. HTTP&#xff08;HyperText Transfer Protocol&#xff09;功能传输超文本无状态协议支持多种方法 特点明文传输基于TCP简单灵活 使用场景示例请求响应 2. HTTPS&#xff08;HTTP Secure&#xff09;功能加密传输身份验证特点基于SSL/TLS默认端口需要证书 使用…

二十三种设计模式

2 工厂方法模式 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 在工厂模式中&#xff0c;我们在创建对象时不会对客户端暴露创建逻辑&#xff0c;并且是通…

【每日论文】Towards Optimal Multi-draft Speculative Decoding

下载论文或阅读原文&#xff0c;请点击&#xff1a;LlamaFactory - huggingface daily paper - 每日论文解读 | LlamaFactory | LlamaFactory 摘要 大型语言模型&#xff08;LLMs&#xff09;已经成为自然语言处理任务中不可或缺的一部分。然而&#xff0c;自回归采样已成为效…

18440二维差分

18440二维差分 ⭐️难度&#xff1a;中等 &#x1f4d6; &#x1f4da; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);int n scanner.nextInt();int m scanner.nextInt();int q scanne…