当前位置: 首页 > news >正文

算法整理——【贪心算法练习(1)】

上一篇博客算法整理——【贪心算法简述】-CSDN博客,我们介绍了贪心算法的基础知识,现在我们要对此进行进一步练习。

一、跳跃游戏II

例题为45. 跳跃游戏 II - 力扣(LeetCode),给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]

最理想的情况是每一步尽可能往远跳,这样尽快跳到最后。但是我们不能单纯的取最远的点,因为会存在[2,3,1,1,4]这样的例子,如果在位置0跳到最远位置2,则会需要三步才能到终点。

我们需要引入覆盖范围的思想,覆盖范围是指我们能跳到达的区域都属于覆盖范围,不是具体的某个终点。比如我们可以计算第一次跳跃的覆盖范围、第二次的覆盖范围等等(主要是记录当前步数的覆盖范围的最大值),最终看什么时候终点被包括。基于此,我们现在的贪心思路变成了,每一步尽可能扩大我们的覆盖范围。

代码如下:

class Solution {
public:int jump(vector<int>& nums) {int ret = 0;//记录步数int cur = 0;//记录当前步数最大的覆盖范围int next = 0;//记录下一步可到达的最大覆盖范围if(nums.size() == 1) return 0;for(int i = 0; i<nums.size(); i++){next = max(next, i+nums[i]);if(i == cur){ret++;if(next>=nums.size()-1) return ret;cur = next;}}return ret;}
};

二、加油站

例题为134. 加油站 - 力扣(LeetCode),在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组 gas 和 cost ,如果你可以按顺序绕环路行驶一周,则返回出发时加油站的编号,否则返回 -1 。如果存在解,则保证它是唯一的。

首先我们可以通过将每点的gas-cost,得到经过该加油站后油量的净增加(或减少)的量dif[i]。如果对所有点的净增加(减少)进行累加,最后结果如果为负,则说明无论从哪一点开始都不能够跑完一圈,此时需要返回-1。如果为正,则需要找到那个起始点。

本题的解题重点为以下的一句思路:我们从0开始累加dif[i],和记为sum,一旦sum小于零,说明i之前的都不能作为起始位置(具体证明可以自己思考)。于是我们需要从i+1开始累加和遍历。本题的局部最优为当前累加dif[i]的和sum一旦小于0,起始位置至少要是i+1。全局最优为找到可以跑一圈的起始位置。

整体代码如下:

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {vector<int> dif(gas.size());int sum = 0;for(int i = 0; i<gas.size(); i++){dif[i] = gas[i]-cost[i];sum+=dif[i];//累计总油量减去总消耗}if(sum<0)//从任何一个点都不可能跑完一圈{return -1;}sum = 0;int ret = 0;for(int i= 0;i<gas.size(); i++){sum+=dif[i];if(sum<0){ret = i+1;sum = 0;   }}return ret;}
};

说明:本文为作者整理知识点用于复习巩固,参考了代码随想录的讲解,有问题可以联系作者欢迎讨论~

相关文章:

算法整理——【贪心算法练习(1)】

上一篇博客算法整理——【贪心算法简述】-CSDN博客&#xff0c;我们介绍了贪心算法的基础知识&#xff0c;现在我们要对此进行进一步练习。 一、跳跃游戏II 例题为45. 跳跃游戏 II - 力扣&#xff08;LeetCode&#xff09;&#xff0c;给定一个长度为 n 的 0 索引整数数组 nu…...

人脸识别课堂签到系统【PyQt5实现】

人脸识别签到系统 1、运用场景 课堂签到,上班打卡,进出门身份验证。 2、功能类别 人脸录入,打卡签到,声音提醒,打卡信息导出,打包成exe可执行文件 3、技术栈 python3.8,sqlite3,opencv,face_recognition,PyQt5,csv 4、流程图 1、导入库 2、编写UI界面 3、打…...

Linux dig命令常见用法

Linux dig命令常见用法 一、dig安装二、dig用法 DIG命令(Domain Information Groper命令)是常用的域名查询工具&#xff0c;通过此命令&#xff0c;你可以实现域名查询和域名问题的定位&#xff0c;对于网络管理员和在域名系统(DNS)领域工作的小伙伴来说&#xff0c;它是一个非…...

数学建模论文写作文档word

目录 1. 摘要写法1.1 确定题目与方法1.2 编写开头段落1.3 填写问题一1.4 重复步骤3填写其他问题1.5 编写结尾段落1.6 编写关键词 2. 问题重述2.1 问题背景2.2 问题提出 3. 问题分析4. 问题X模型的建立与求解5. 模型的分析5.1 灵敏度分析5.2 误差分析&#xff08;主要用于预测类…...

嵌入式C语言面试相关知识——CPU、进程和线程相关(相关问题很多,会经常过来更新)

嵌入式C语言面试相关知识——CPU、进程和线程相关 一、博客声明二、自问题目——CPU相关1、什么是中断&#xff1f;如何处理中断&#xff1f;2、解释上下文切换(Context Switch)&#xff1f;3、在嵌入式中如何优化CPU使用&#xff1f; 三、自问题目——进程相关1、什么是进程&a…...

Linux学习看这一篇就够了,超超超牛的Linux基础入门

引言 小伙伴们&#xff0c;不管是学习c还是学习其他语言在我们学的路上都绕不过操作系统&#xff0c;而且&#xff0c;老生常谈的Linux更是每个计算机人的必修&#xff0c;那么我们对Linux的了解可能只是从别人那听到的简单的这个系统很牛&#xff0c;巴拉巴拉的&#xff0c;但…...

el-scrollbar组件使用踩坑记录

一、el-scrollbar和浏览器原生滚动条一起出现 问题描述 el-scrollbar组件主要用于替换浏览器原生导航条。如下图所示&#xff0c;使用el-scrollbar组件后&#xff0c;发现未能成功替换掉浏览器原生导航条&#xff0c;二者同时出现。 引发原因 el-scrollbar的height属性如果…...

Linux计算机结构

1.计算机设计原理 冯诺依曼体系结构 通过该结构得出:中央处理器 2.操作系统整体框架 操作系统是不会让你直接乱使用底层的各种硬件&#xff0c;但为了依旧能够让你使用到该资源则会给你预留一些窗口去让你与其交互&#xff08;类比银行&#xff0c;直接小窗口交互&#xff0c;…...

应用进程、SurfaceFlinger进程、HWC进程 之间的关系

应用进程、SurfaceFlinger进程、HWC&#xff08;Hardware Composer&#xff09;进程在Android系统中扮演着重要的角色&#xff0c;它们之间的关系和通信流程是Android图形显示系统的核心部分。以下是这三者之间关系和通信流程的详细分析&#xff1a; 一、三者之间的关系 应用进…...

66.Python-web框架-Django-免费模板django-datta-able的分页的一种方式

目录 1.方案介绍 1.1实现效果 1.2django.core.paginator Paginator 类: Page 类: EmptyPage 和 PageNotAnInteger 异常: 1.3 templatetags 2.方案步骤 2.1创建一个common app 2.2创建plugins/_pagination.html 2.3 其他app的views.py查询方法 2.4在AIRecords.html里…...

Python编程学习笔记(1)--- 变量和简单数据类型

1、变量 在学习编程语言之前&#xff0c;所接触的第一个程序&#xff0c;绝大多数都是&#xff1a; print("Hello world!") 接下来尝试使用一个变量。在代码中的开头添加一行代码&#xff0c;并对第二行代码进行修改&#xff0c;如下&#xff1a; message "…...

第二证券:资金抱团“高股息”,超三成A股年内创历史新低!

A股商场行情冰火两重天。 “预制菜榜首股”跌破发行价 7月8日&#xff0c;味知香盘中最低跌至19.26元/股&#xff0c;股价跌破发行价&#xff0c;并创前史新低。揭露资料显现&#xff0c;公司是集研发、生产、销售为一体的半成品菜企业&#xff0c;现在具有8大产品系列&#…...

ASAN排查程序中内存问题使用总结

简介 谷歌有一系列Sanitizer工具&#xff0c;可用于排查程序中内存相关的问题。常用的Sanitizer工具包括&#xff1a; Address Sanitizer&#xff08;ASan&#xff09;&#xff1a;用于检测内存使用错误。Leak Sanitizer&#xff08;LSan&#xff09;&#xff1a;用于检测内存…...

day01:项目概述,环境搭建

文章目录 软件开发整体介绍软件开发流程角色分工软件环境 外卖平台项目介绍项目介绍定位功能架构 产品原型技术选型 开发环境搭建整体结构&#xff1a;前后端分离开发前后端混合开发缺点前后端分离开发 前端环境搭建Nginx 后端环境搭建熟悉项目结构使用Git进行版本控制数据库环…...

Python爬虫与数据可视化:构建完整的数据采集与分析流程

Python爬虫技术概述 Python爬虫是一种自动化的数据采集工具&#xff0c;它可以模拟浏览器行为&#xff0c;访问网页并提取所需信息。Python爬虫的实现通常涉及以下几个步骤&#xff1a; 发送网页请求&#xff1a;使用requests库向目标网站发送HTTP请求。获取网页内容&#xf…...

Java---包装类与泛型

1.包装类 1.1 包装类 在Java中&#xff0c;由于基本数据类型不是继承Object类&#xff0c;为了在泛型代码中可以支持基本数据类型&#xff0c;Java给每个基本数据类型各自提供了一个包装类。 如下图 除了char和int基本数据类型的包装类型有点特别&#xff0c;其他的都是首字…...

如何优化 PostgreSQL 中对于复杂数学计算的查询?

文章目录 一、理解复杂数学计算的特点二、优化原则&#xff08;一&#xff09;索引优化&#xff08;二&#xff09;查询重写&#xff08;三&#xff09;数据库配置调整&#xff08;四&#xff09;使用数据库内置函数的优势 三、具体的优化方案和示例&#xff08;一&#xff09;…...

前端面试题27(在实际项目中,如何有效地利用Vue3的响应式系统提高性能?)

在实际项目中&#xff0c;有效利用Vue3的响应式系统提高性能主要涉及以下几个关键点&#xff1a; 1. 合理使用reactive和ref reactive&#xff1a;用于将复杂的数据结构&#xff08;如对象或数组&#xff09;转换成响应式版本。确保只将需要实时更新的数据结构声明为响应式&am…...

掌握Vue 3生命周期:从组合式API到高效代码实践

引言 在 Vue 3 中&#xff0c;生命周期的概念得到了进一步的优化和简化。Vue 3 引入了组合式 API&#xff08;Composition API&#xff09;&#xff0c;这为开发者提供了更灵活的方式来组织和重用代码逻辑。与传统的选项式 API&#xff08;Options API&#xff09;相比&#x…...

使用cgroup对pgsql进行分库资源限制

系统:Centos7 pg版本:14.11 自建pgsql14中有很多个库,一个库对应一个租户,偶尔会出现单个租户执行慢sql影响全局的问题,目前官方也没有比较合适的处理方案或者插件 解决方案: 因为pgsql是多进程应用,所以正好可以使用linux自带的cgroup功能进行资源限制。定时将进程中…...

GTX 1050 Ti显卡的设备推理+模拟器运行时的显存占用实测报告!

...

Phi-4-mini-reasoning真实案例:GPT-4对比测试中更优的确定性推理表现

Phi-4-mini-reasoning真实案例&#xff1a;GPT-4对比测试中更优的确定性推理表现 1. 模型介绍 Phi-4-mini-reasoning是一款专注于推理任务的文本生成模型&#xff0c;特别擅长处理需要多步逻辑推导的问题。与通用聊天模型不同&#xff0c;它被设计用来解决数学题、逻辑题等需…...

lingbot-depth-vitl14镜像兼容性说明:insbase-cuda124-pt250-dual-v7底座深度适配细节

lingbot-depth-vitl14镜像兼容性说明&#xff1a;insbase-cuda124-pt250-dual-v7底座深度适配细节 1. 引言&#xff1a;为什么你需要关注这个深度估计模型&#xff1f; 如果你正在做机器人、自动驾驶或者AR/VR相关的项目&#xff0c;肯定遇到过这样的问题&#xff1a;怎么让机…...

intv_ai_mk11保姆级教学:输入‘你好’→追问第2点→指定表格输出,完整交互链路演示

intv_ai_mk11保姆级教学&#xff1a;输入你好→追问第2点→指定表格输出&#xff0c;完整交互链路演示 1. 快速了解intv_ai_mk11 intv_ai_mk11是一款基于Llama架构的AI对话助手&#xff0c;拥有7B参数规模&#xff0c;运行在GPU服务器上。它能帮助你完成各种任务&#xff0c;…...

16-bit像素UI有多酷?Pixel Epic智识终端交互设计与视觉效果展示

16-bit像素UI有多酷&#xff1f;Pixel Epic智识终端交互设计与视觉效果展示 1. 像素史诗&#xff1a;当科研遇上复古游戏 在数字世界的某个角落&#xff0c;一款名为Pixel Epic的智识终端正在重新定义AI工具的交互体验。这不是普通的报告生成器&#xff0c;而是一场将严肃科研…...

从零部署到实战标注:SUSTechPOINTS 3D点云标注平台全流程指南

1. 为什么选择SUSTechPOINTS进行3D点云标注 在自动驾驶研发过程中&#xff0c;3D点云标注是个绕不开的苦差事。我最早用过不少商业标注工具&#xff0c;不是价格贵得离谱&#xff0c;就是功能残缺不全。直到去年团队接手一个校企合作项目&#xff0c;才发现南方科技大学开源的这…...

企业级母婴商城系统管理系统源码|SpringBoot+Vue+MyBatis架构+MySQL数据库【完整版】

摘要 随着互联网技术的快速发展和电子商务的普及&#xff0c;母婴用品市场呈现出蓬勃发展的态势。年轻父母对于母婴产品的需求日益多样化&#xff0c;传统的线下零售模式已无法满足其便捷、高效、个性化的购物需求。因此&#xff0c;构建一个功能完善、安全可靠的企业级母婴商城…...

百川2-13B-Chat-4bits应用场景:开发者日常——代码审查、错误诊断、技术文档润色实战

百川2-13B-Chat-4bits应用场景&#xff1a;开发者日常——代码审查、错误诊断、技术文档润色实战 1. 引言&#xff1a;当大模型成为你的开发伙伴 想象一下这个场景&#xff1a;深夜&#xff0c;你盯着屏幕上那段运行了三次、报错信息却完全不同的代码&#xff0c;咖啡已经凉透…...

新手避坑指南:PX4飞控连接TFmini、LIDAR Lite V3等定高雷达的完整接线与参数配置(QGC实操)

PX4飞控与定高雷达实战&#xff1a;从接线到参数配置的避坑指南 刚拿到PX4飞控和一堆传感器的新手们&#xff0c;面对密密麻麻的接口和参数设置&#xff0c;是不是有种无从下手的感觉&#xff1f;特别是当你需要连接定高雷达时&#xff0c;不同品牌&#xff08;北醒TFmini、LID…...

智能车调参手记:我用Kp=200, Ki=60, Kd=40让小车稳如老狗

智能车调参手记&#xff1a;我用Kp200, Ki60, Kd40让小车稳如老狗 凌晨三点的实验室里&#xff0c;咖啡杯已经见底&#xff0c;眼前的智能车在测试跑道上又一次冲出了弯道。这已经是本周第七次熬夜调试&#xff0c;上坡时的速度波动问题始终困扰着我们。就在准备放弃的时候&…...