LeetCode算法练习top100:(10)贪心算法

package top100.贪心算法;import java.util.ArrayList;
import java.util.List;public class TOP {//121. 买卖股票的最佳时机public int maxProfit(int[] prices) {int res = 0, min = prices[0];for (int i = 1; i < prices.length; i++) {if (prices[i] < min) {min = prices[i];}res = Math.max(res, prices[i] - min);}return res;}//55. 跳跃游戏public boolean canJump(int[] nums) {if (nums == null || nums.length == 0) {return true;}int max = 0; //每个位置可达的最大索引for (int i = 0; i < nums.length ; i++) {if (max >= i) { //保证i可达max = Math.max(max, nums[i] + i);}}return max >= nums.length - 1; //最大索引超出最后一个字符索引,则可达}//45. 跳跃游戏 II//贪心算法:让每次跳到最远,则跳跃次数可以最小//计算当前位置可以跳跃的范围,从范围里面选取一个可以跳跃的最远位置作为下一个位置public int jump(int[] nums) {int res = 0;int n = nums.length;for (int i = 0; i < n - 1;) {//每次跳跃选取下个阶段可以跳跃的最远值int maxIndex = nums[i] + i; //下个阶段可以跳跃的最大范围//直接跳到最后了if (maxIndex >= n - 1) {res++;break;}//选择下个跳跃范围内可以跳跃到的最远值int max = nums[i + 1] + i + 1;//下个范围跳的最远距离int index = i + 1; //最大数对应的位置for (int j = i + 2; j <= maxIndex; j++) {if (nums[j] + j >= max) { //如果相等,取后面一个max = nums[j] + j;index = j; //每次在上次能跳到的范围(end)内选择一个能跳的最远的位置(也就是能跳到max_far位置的点)作为下次的起跳点 !}}i = index; //跳跃到最大位置上res++;}return res;}//763. 划分字母区间//贪心算法:先根据当前字符,寻找其最大索引,在这个字串中,寻找每一个字符的最大索引,截取为一个字串public List<Integer> partitionLabels(String s) {List<Integer> res = new ArrayList<>();//用map记录每个字符的最大索引int[] map = new int[26];char[] chars = s.toCharArray();for (int i = 0; i < chars.length; i++) {map[chars[i] - 'a'] = i;}for (int i = 0; i < chars.length;) {//当前字母的最大索引int maxIndex = map[chars[i] - 'a'];//更新字串中的maxIndexfor (int j = i + 1; j < maxIndex; j++) {int curMax = map[chars[j] - 'a'];maxIndex = Math.max(maxIndex, curMax);}//截取为字串res.add(maxIndex - i + 1);i = maxIndex + 1; //更新索引}return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/230864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

供应链管理:专业词汇积累

一、供应链管理专业词汇积累 序号词汇词汇英文解释1库存持有天数days on hand库存水平的度量标准&#xff0c;等于现有库存数量除以平均每日库存消耗量。2差异&#xff08;化&#xff09;延迟方法delayed differentiation一种供应链管理方法&#xff0c;即尽可能的保留和共享产…

Maven知识

文章目录 一、概念1、官方文档2、什么是Maven&#xff1f; 二、相关知识1、Maven生命周期1.1、clean1.2、default1.3、site 2、Pom文件3、Pom常用元素3.1、项目基本元素3.2、<properties\></properties\>3.3、pom继承相关3.4、依赖管理相关3.5、构建管理相关3.6、&…

使用ffmpeg将图片合成为mp4

首先在在图片文件夹输入cmd 这里确保已经安装ffmpeg并配置好环境变量。 然后这是我的文件夹目录&#xff1a; 将21张图片合成为mp4视频 这里使用如下命令&#xff1a; ffmpeg -framerate 1 -start_number 0 -i %d.png -c:v libx264 -pix_fmt yuv420p output.mp4 -framerat…

设计模式——中介者模式

引言 中介者模式是一种行为设计模式&#xff0c; 能让你减少对象之间混乱无序的依赖关系。 该模式会限制对象之间的直接交互&#xff0c; 迫使它们通过一个中介者对象进行合作。 问题 假如你有一个创建和修改客户资料的对话框&#xff0c; 它由各种控件组成&#xff0c; 例如…

最近IT圈子里有这样一句流行语:“Java已经死了,前端也已经凉了”?

Java与前端的发展前景 最近IT圈子里有这样一句流行语:“Java已经死了,前端也已经凉了”。这种极端看衰的语句似乎在散播焦虑,那么Java和前端的发展前景真的这么差吗? 就业市场而言,Java和前端仍然是最受欢迎的岗位之一。Java拥有强大的生态系统,前端技术发展迅速,都提供大量就…

[渗透测试学习] Analytics - HackTheBox

文章目录 信息搜集漏洞利用内核提权 信息搜集 nmap扫描一下端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.233发现两个端口&#xff0c;22端口为ssh服务&#xff0c;80端口有http服务 尝试访问80端口&#xff0c;发现重定向到http://analytical.htb/并且无法访问 编辑/…

Java+Swing: 数据回显和修改功能的实现 整理14

1. 数据回显 其实数据回显就是为修改功能的实现做准备的 1.1 在MainView类中&#xff0c;创建一个方法获取选中行的id // 获取选中的行的idpublic int[] getSelectedRowIds() {int[] selectedRows mainViewTable.getSelectedRows();int[] ids new int[selectedRows.length];…

第六届江苏人工智能大会成功举办,赛氪网荣获“优秀合作伙伴”奖项

2023年12月15日&#xff0c;第六届江苏人工智能大会在南京成功举办。本次大会汇集了众多人工智能领域的专家、学者和企业代表&#xff0c;共同探讨人工智能技术的最新发展和应用。江苏人工智能大会由江苏省人工智能学会&#xff08;简称&#xff1a;JSAI&#xff09;创办于2018…

【每日一题】反转二叉树的奇数层

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;广度优先搜索方法二&#xff1a;深度优先搜索 写在最后 Tag 【深度优先搜索】【广度优先搜索】【二叉树】【2023-12-15】 题目来源 2415. 反转二叉树的奇数层 题目解读 反转二叉树奇数层的节点。 解题思路 对于二叉…

Java八股文面试全套真题【含答案】- Element Plus篇

什么是Element UI 和 Element Plus&#xff1f; Element UI 和 Element Plus 是基于 Vue.js 的一套非常受欢迎的开源 UI 组件库&#xff0c;用于快速构建具有现代化设计和丰富交互效果的前端界面。Element UI 和 Element Plus 有哪些特点和优势&#xff1f; 提供丰富的组件库&a…

【LeetCode刷题笔记(8-1)】【Python】【接雨水】【动态规划】【困难】

文章目录 引言接雨水题目描述提示 解决方案1&#xff1a;【动态规划】结束语 接雨水 引言 编写通过所有测试案例的代码并不简单&#xff0c;通常需要深思熟虑和理性分析。虽然这些代码能够通过所有的测试案例&#xff0c;但如果不了解代码背后的思考过程&#xff0c;那么这些代…

【扩散模型Diffusion Model系列】0-从VAE开始(隐变量模型、KL散度、最大化似然与AIGC的关系)

VAE VAE(Variational AutoEncoder)&#xff0c;变分自编码器&#xff0c;是一种无监督学习算法&#xff0c;被用于压缩、特征提取和生成式任务。相比于GAN(Generative Adversarial Network)&#xff0c;VAE在数学上有着更加良好的性质&#xff0c;有利于理论的分析和实现。 文…

C++指针

本文章对C指针的使用做一个全面的阐述与解释 1.1指针的定义使用 指针&#xff1a; 通过指针间接访问内存 指针就是地址 看下面代码&#xff1a; #include<iostream> using namespace std; int main(){//1、定义指针int * p;int a 10;//2、使用指针p &a;cout<…

STM32-02-STM32基础知识

文章目录 STM32基础知识1. STM32F103系统架构2. STM32寻址范围3. 存储器映射4. 寄存器映射 STM32基础知识 1. STM32F103系统架构 STM32F103 STM32F103是ST公司基于ARM授权Cortex M3内核而设计的一款芯片&#xff0c;而Cortex M内核使用的是ARM v7-M架构&#xff0c;是为了替代…

根据星历文件实现卫星的动态运行模拟matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 .................................................................................... % …

测试用例的修改更新

测试用例的修改更新是指测试过程中由于用户需求的改变&#xff0c;或者测试过程中发现有新的需求产生&#xff0c;使得测试用例需要进行修改。修改更新测试用例不仅是一种测试技术&#xff0c;更是一种质量保证的方法。但修改和更新测试用例的技术要点在于&#xff1a; 1、执行…

ReactHooks大全—useEffect

React Hooks是一种在函数组件中使用状态和生命周期等特性的方法。useEffect是其中一个常用的Hook&#xff0c;它可以让你在组件渲染后执行一些副作用操作&#xff0c;比如发送网络请求、订阅事件、修改DOM等。在本文中&#xff0c;我们将介绍useEffect的基本使用、实现原理、最…

Note3---初阶二叉树~~

目录​​​​​​​ 前言&#x1f344; 1.树概念及结构☎️ 1.1 树的概念&#x1f384; 1.2 树的相关概念&#x1f99c; 1.2.1 部分概念的加深理解&#x1f43e; 1.2.2 树与非树&#x1fab4; 1.3 树的表示&#x1f38b; 1.4 树在实际中的运用&#xff08;表示文件系统…

[Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(2)

[Onnx简化库深度剖析] OnnxSimplifier和OnnxOptimizer解读-(2) 简介 上篇重点介绍了OnnxSimplifier的库&#xff0c;其中的FixedPointFn迭代优化函数利用到了OnnxOptimizer这个官方的优化库&#xff0c;大部分的优化细节是在OnnxOptimizer内的。因此本篇重点介绍一下OnnxOpti…

飞天使-docker知识点12-docker-compose

文章目录 docker-compose命令启动单个容器重启容器停止和启动容器停止和启动所有容器演示一个简单示范 docker-compose 部署有依赖问题 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许您使用简单的 YAML 文件来配置应用程序的服务、网络和存储等方…