【代码随想录_Day24】134. 加油站 135. 分发糖果 860. 柠檬水找零 406. 根据身高重建队列

Day24 OK,今日份的打卡!第二十四天

  • 以下是今日份的总结
    • 加油站
    • 分发糖果
    • 柠檬水找零
    • 根据身高重建队列

以下是今日份的总结

  1. 加油站
  2. 分发糖果
  3. 柠檬水找零
  4. 根据身高重建队列

今天的题目难度不低,而且非常的有意思,尽量还是写一些简洁代码 ^ _ ^

加油站

思路:

寻找起点,然后进行条件判断
gas[i] - cost[i]的差值是很重要的判断条件

值得注意的是

局部最优:当前累加curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行
全局最优:找到可以跑一圈的起始位置

    int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int sum = 0, start = 0, curSum = 0;for (int i = 0; i < gas.size(); i++) {curSum += gas[i] - cost[i];//当前位置的差值和sum += gas[i] - cost[i];//两个数组的差值总和if (curSum < 0) {start = i + 1; //当前差值的和小于0,开始位置直接置于下一位curSum = 0;//差值之和重新置为0}}if (sum < 0)return -1;//两个数组的差值总和小于0时,说明无论如何都不可能回到原点return start;}

分发糖果

思路:

局部最优解:
一次是从左到右遍历,只比较右边孩子评分比左边大的情况。
一次是从右到左遍历,只比较左边孩子评分比右边大的情况。
整体最优解:相邻的孩子中,评分高的孩子获得更多的糖果

值得注意的是

这道题目一定是要确定一边之后,再确定另一边,例如比较每一个孩子的左边,然后再比较右边,如果两边一起考虑一定会顾此失彼。

    int candy(vector<int>& ratings) {vector<int> candyVec(ratings.size(), 1);// 从前向后for (int i = 1; i < ratings.size(); i++) {if (ratings[i] > ratings[i - 1])candyVec[i] = candyVec[i - 1] + 1;}// 从后向前for (int i = ratings.size() - 2; i >= 0; i--) {if (ratings[i] > ratings[i + 1]) {candyVec[i] = max(candyVec[i], candyVec[i + 1] + 1);//倒序的时候满足条件时,选取更大的值}}// 统计结果int result = 0;for (int i = 0; i < candyVec.size(); i++)result += candyVec[i];return result;}

柠檬水找零

思路:

最大只有20的面额,只需记录5和10剩下的数额

值得注意的是

20块优先用10+5的方法找零,让后才是三个5

     bool lemonadeChange(vector<int>& bills) {int five = 0;int ten = 0;for (int i = 0; i < bills.size(); i++) {if (bills[i] == 5) {five++;}if (bills[i] == 10) {if (five == 0)return false;five--;ten++;}if (bills[i] == 20) {if (ten != 0 && five != 0) {ten--;five--;} else if (five >= 3 && ten == 0) {five -= 3;} else {return false;}}}return true;}

根据身高重建队列

思路:

k代表的是,现在这个队里,自己前面的人里面,h比自己大或与自己相等的人的个数。

值得注意的是

局部最优:优先按身高高的people的k来插入。插入操作过后的people满足队列属性
全局最优:最后都做完插入操作,整个队列满足题目队列属性

    static bool cmp(const vector<int>& a, const vector<int>& b) {if (a[0] == b[0])return a[1] < b[1];return a[0] > b[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {//按照身高大小排序,身高相同时k从小到大排列sort(people.begin(),people.end(),cmp);vector<vector<int>>res;for(int i = 0;i<people.size();i++){int pos = people[i][1];//k 值当作距离 数组开头的插入位置res.insert(res.begin()+pos, people[i]);//插入操作}return res;}

写在最后

----OK,今日份的博客就写到这里,这一期的贪心算法好难想,明天继续加油!!!
—还没看下期的题,但是我的栈还有一节没写;
–追上时间进度了吗?如追,从欠两天变成欠一天!!(笑
-但是你要庆祝,今天是新生,今天是转变,今天不再是过去的延伸。

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

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

相关文章

花键参数确定的流程是怎么样的?

继续花键的话题&#xff0c;今天跟小伙伴们一同学习一下&#xff1a;渐开线花键的参数确定的一般流程及基本方法。 前面有好几篇介绍了花键的基本参数的概念&#xff0c;包括规格、模数、齿数、压力角等等。以及花键的定心方式&#xff0c;内外花键的配合方式。那么这些参数的…

ARM架构 AArch64 基础知识介绍

介绍 aarch64是 ARM 架构的 64 位版本&#xff0c;它是 ARMv8 架构的一部分&#xff0c;被设计用来提供更高的性能和更大的地址空间&#xff0c;同时保持与 32 位 ARM 架构的兼容性。AArch64 是 ARMv8 的 64 位指令集架构&#xff08;ISA&#xff09;&#xff0c;它提供了丰富的…

2023 最新版IntelliJ IDEA 2023.1创建Java Web前(vue3)后端(spring-boot3)分离 项目详细步骤(图文详解)

文章目录 &#x1f6a9; 接上篇&#x1f3f3;‍&#x1f308; 项目构建所需的相关工具JavaIDEAmavenNodeJSVueVisual Studio Code &#x1f30c; 后端项目创建详细步骤&#x1f6eb; 1、开始创建新项目&#x1f6eb; 2、输入项目名称、选择项目存储位置、项目管理工具&#xff…

昇思25天学习打卡营第4天|yulang

今天主要了解了数据集 Dataset&#xff0c;主要包含了&#xff1a;数据集加载、数据集迭代、数据集常用操作、 可随机访问数据集、可迭代数据集、生成器。对于生成器很好理解&#xff0c;用代码来造数据&#xff0c;可以动态地生成数据。主要作用数据集通常被用于训练模型

tampermonkey插件下载国家标准文件

#创作灵感# 最近在一个系统招标正文中看到了一些国家标准&#xff0c;想要把文章下载下来&#xff0c;方便查阅&#xff0c;但是“国家标准全文公开系统”网站只提供了在线预览功能&#xff0c;没有提供下载功能&#xff0c;但是公司又需要文件&#xff0c;在网上找了一些办法&…

gin项目部署到服务器并后台启动

文章目录 一、安装go语言环境的方式1.下载go安装包&#xff0c;解压&#xff0c;配置环境变量2.压缩项目上传到服务器并解压3.来到项目的根目录3.开放端口&#xff0c;运行项目 二、打包的方式1.在项目的根目录下输入以下命令2.把打包好的文件上传到服务器3.部署网站4.ssl证书 …

C++字体库开发之字体回退三

代码片段 class FontCoverage { public: using SP std::shared_ptr<FontCoverage>; virtual ~FontCoverage() default; virtual void set(int index, FontTypes::CoverageLevel level) 0; virtual FontTypes::Coverag…

004 线程的状态

文章目录 Java线程可能的状态&#xff1a; 状态名称说明NEW初始状态&#xff0c;线程被构建&#xff0c;但是还没有调用start()方法RUNNABLE运行状态&#xff0c;Java线程将操作系统中的就绪和运行两种状态笼统地称作"运行中"BLOCKED阻塞状态&#xff0c;表示线程阻…

职场办公受欢迎的电脑桌面便签,手机电脑同步的备忘录

在快节奏的职场生活中&#xff0c;有效的时间管理和信息记录变得尤为重要。为了帮助大家更好地应对工作挑战&#xff0c;好用的电脑桌面便签和手机电脑同步的备忘录&#xff0c;好用便签应运而生&#xff0c;成为了当前职场办公中的得力助手。 好用便签是一款备受青睐的电脑桌…

阿里云物联网应用层开发:第三部分,微信小程序和web客户端实现

文章目录 哔哩哔哩视频教程1、阿里云物联网平台对接微信小程序2、阿里云物联网平台对接web客户端2-1MQTT服务器编写2-2 web端Servlet部分编写备注哔哩哔哩视频教程 【阿里云物联网综合开发,STM32+ESP8266+微信小程序+web客户端一篇教程详细讲解】 https://www.bilibili.com/v…

.NET下的开源OCR项目:解锁图片文字识别的新篇章

在数字化时代&#xff0c;从图片中高效准确地提取文字信息已成为众多应用场景的迫切需求。OCR&#xff08;Optical Character Recognition&#xff0c;光学字符识别&#xff09;技术正是满足这一需求的关键技术。对于.NET开发者而言&#xff0c;幸运的是&#xff0c;存在多个开…

接私活儿神器,一款功能强大的 SaaS 快速开发平台

今天&#xff0c;推荐一个微服务 SaaS 快速开发平台系统项目&#xff0c;笔者第一次使用就有点上头&#xff0c;爱不释手&#xff0c;必须要推荐给大家。 这是我目前见过最好的微服务 SaaS 快速开发平台系统项目。功能完整&#xff0c;代码结构清晰。值得推荐。 项目介绍 本…

nginx部署多个项目;vue打包项目部署设置子路径访问;一个根域名(端口)配置多个子项目

本文解决&#xff1a; vue打包项目部署设置子路径访问&#xff1b;nginx部署多个子项目&#xff1b;一个ip/域名 端口 配置多个子项目&#xff1b;配置后&#xff0c;项目能访问&#xff0c;但是刷新页面就丢失的问题 注&#xff1a;本文需要nginx配置基础。基础不牢的可见文…

致力于打造一个操作最简单、功能最全面、创意最丰富的聊天记录管理工具

管理您的聊天数据 下载&#xff1a;https://download.csdn.net/download/mo3408/89497474 提供数据获取、导出、分析全栈式解决方案 获取信息 一键式操作&#xff0c;数据信手拈来 导出聊天记录 批量导出、自定义时间、消息类型任意选、Word、Excel、HTML、TXT想要哪个勾哪个…

在地图上根据经纬度,画一个矩型围栏,设置每个点的经纬度

在做一个需求时有一个小点就是添加一个配送区域(5公里直径内的)矩形围栏 我做的比较简单 大家看看有没有帮助, 也是精简代码。测试效果上相对是精准的 //谷歌&#xff0c;根据经纬度获取以它为中心半径为5公里内的矩形的四个点经纬度getDefalutPoints (lng: number, lat: num…

adb push 报错 ...error: failed to copy...

一、现象&#xff1a; 原因&#xff1a;没有权限导致的 二、解决方法&#xff1a; adb root adb remount #重新加载文件系统三、再次尝试&#xff1a;adb push xxx.apk /system/app 结果&#xff1a;成功

猫咖老板教你一招解决猫浮毛问题,质量好的猫用空气净化器分享

作为一名猫咖店老板&#xff0c;我经常被朋友问到关于宠物空气净化器的各种问题。有人认为这是个神器&#xff0c;而有人则认为这完全是花钱买智商税。其实我刚开始对购买宠物空气净化器也持怀疑态度&#xff0c;心想这么多钱花下去真的有效吗&#xff1f;但使用后&#xff0c;…

Axure教程:App侧边抽屉菜单交互制作

今天给大家示范一下抽屉菜单在Axure中的做法。在抽屉式菜单中&#xff0c;要实现两个交互效果&#xff0c;分别是&#xff1a; 交互一 抽屉菜单中1、2级菜单项的伸缩效果 实现逻辑&#xff1a;设置动态面板的切换状态及“推动/拉动原件”实现 交互二 菜单项的选中状态切换 …

vue的$nextTick是什么是干什么用的?

为什么需要使用$nextTick&#xff1f;他的使用场景 1.你在接口返回之后在获取高度 正常等页面加载在mounted这个钩子函数里 这时候就需要找到接口赋值的地方 这样就可以获取到数据操作以后的dom元素了 $nextTick是什么是干什么用的&#xff1f; $nextTick() 是 Vue.js 框…

iPad卡在白苹果开不了机怎么办?3种解决办法!

iPad开机卡在白苹果&#xff1f;iPad Air 黑屏重启白苹果&#xff1f;iPad Pro 莫名关机&#xff0c;开机白苹果无法启动&#xff1f;iPad mini 摔落、泡水等&#xff0c;开机一直显示白苹果&#xff0c;iPad出现这些情况怎么办&#xff1f; 无论是使用iPad、iPad Air、iPad P…