【随想录】Day32—第八章 贪心算法 part02

devtools/2024/9/24 21:25:10/

目录

  • 题目1: 买卖股票的最佳时机 II
    • 1- 思路
    • 2- 题解
      • ⭐买卖股票的最佳时机 II ——题解思路
  • 题目2: 55. 跳跃游戏
    • 1- 思路
    • 2- 题解
      • ⭐跳跃游戏 ——题解思路
  • 题目3: 45. 跳跃游戏 II
    • 1- 思路
    • 2- 题解
      • ⭐跳跃游戏 II ——题解思路


题目1: 买卖股票的最佳时机 II

  • 题目链接:122. 买卖股票的最佳时机 II

1- 思路

贪心:

  • 求数组中相邻两个元素的差值,例如数组 [ 1, 5 , 3 ]
  • 如果是第一天买如,第三天卖出,相当于 p[2] - p[0] = p[2] - p[1] + p[1] - p[0]
  • 贪心思路:实际上就是求相邻两个元素的差值和,若差值大于 0 则收集结果,为利润,本题贪心即 求 所有正数差值和

2- 题解

⭐买卖股票的最佳时机 II ——题解思路

在这里插入图片描述

class Solution {public int maxProfit(int[] prices) {int[] sub = new int[prices.length-1];int index = 0;int res = 0;for(int i = 1 ; i < prices.length;i++){sub[index++] = prices[i] - prices[i-1];}for(int i = 0 ; i < sub.length;i++){if(sub[i]>0){res+=sub[i];}}return res;}
}

题目2: 55. 跳跃游戏

  • 题目链接:55. 跳跃游戏

1- 思路

贪心

  • 定义一个 int cover变量,代表数组的覆盖范围
  • 通过覆盖范围来遍历数组,每次更新 cover = cover + nums[i],同时覆盖范围取 范围内最大值
  • 贪心思路:遍历 cover 范围内的数组,每次根据 当前数组的 nums 值,取当前范围最大的可到达数 为当前 cover
    • 如果 cover 超出 数组长度 直接返回 true
    • 否则返回 false

2- 题解

⭐跳跃游戏 ——题解思路

在这里插入图片描述

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

题目3: 45. 跳跃游戏 II

  • 题目链接:45. 跳跃游戏 II

1- 思路

  • 区分于 跳跃游戏的区别在于,并非每次是跳的最大次数就最少

贪心

  • **贪心思路:**以最少的步数,尽可能多的增加覆盖范围 cover ,区别于跳跃游戏基础版的点在于,再定义一个 nextCover,记录每次遍历到的最大范围,但每次不一定更新 cover
    • 只有在当前 cover 走不下去时候,再更新 cover,对结果进行 ++

2- 题解

⭐跳跃游戏 II ——题解思路

在这里插入图片描述

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


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

相关文章

ShaderLab的混合命令

文章目录 示例原理混合因子混合操作参考 示例 Pass {Tags{"LightMode" "ForwardBase"}// 关闭深度写入ZWrite Off// 设置Pass的混合模式&#xff0c;SrcAlpha: 片元着色器产生的颜色的混合因子// OneMinusSrcAlpha 已经存在于颜色缓冲中的颜色的混合因子…

面试算法十问(中英文)

1.两数之和 (Two Sum) 给定一个整数数组 nums 和一个目标值 target&#xff0c;请你在该数组中找出和为目标值的那两个整数&#xff0c;并返回它们的数组下标。 Given an array of integers nums and a target value target, find the two integers in the array that sum up t…

汇编语言-[bx]和loop指令

[bx]指令&#xff1a; [bx] 和 [0] 有些类似&#xff0c;[0] 表示内存单元&#xff0c;它的偏移地址是 0 比如&#xff1a; mov ax,[0] 将一个内存单元的内容送入 ax &#xff0c;这个内存单元的长度为 2字节&#xff08;字单元&#xff09;&#xff0c; 存放一个字节&…

ubuntu没有fcitx输入法图标

前言 Ubuntu20.04&#xff0c;卸载了ibus输入法&#xff0c;安装的fcitx搜狗输入法&#xff0c;出现无法切换到英文输入下&#xff0c;进行了重新启动&#xff0c;发现输入法图标不见了 可以尝试手动启动fcitx&#xff1a; 打开终端&#xff0c;运行以下命令&#xff1a; f…

springboot配置WebMvcConfigurationSupport

一、在spring里有四个mvc配置类 1、mvc配置类 WebMvcConfigurer WebMvcConfigurerAdapter WebMvcConfigurationSupport WebMvcAutoConfiguration 2、WebMvcConfigurer为接口 3、WebMvcConfigurerAdapter是WebMvcConfigurer的实现类&#xff0c;且大部分为空方法&#xff0c;…

HTML实体编码

HTML实体编码是HTML中用来替换特殊字符的一种机制&#xff0c;以确保这些特殊字符在浏览器中能够正确显示 这些特殊字符在HTML中具有特定的含义&#xff0c;比如小于号“<”用来表示HTML标签的开始&#xff0c;大于号“>”用来表示HTML标签的结束&#xff0c;而引号可能…

用NuGet安装 Oracle ODP.NET

oracle官网原文&#xff1a;Using NuGet to Install and Configure Oracle Data Provider for .NET Using NuGet to Install and Configure Oracle Data Provider for .NET In this section, you will install ODP.NET NuGet packages from nuget.org. Select View > Solut…

Bentley二次开发教程27-交互窗口-界面开发方法

界面设计概述 引言 在我们掌握了交互式工具的使用方法后&#xff0c;在使用过程中会发现&#xff1a;虽然工具中拥有多种交互的手段&#xff0c;但仅凭工具中鼠标&#xff0c;特殊按键与信息提示等交互方法&#xff0c;没有办法同时对多个信息进行展示&#xff0c;也不够直观…