代码随想录第31天|贪心算法

134. 加油站
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

参考

思路:

  • 以每个油站相差作为判断, 比如:
    • gas [5 8 2 8]
    • cost [6 5 6 6]
    •     [-1 3 -4 2]
      
  • 错误 : 把相差最大点当作起点
  • 判断能否绕一圈 : 相加数组是否小于0
  • 局部最优: 当前累加rest[i]的和curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行
  • 全局最优: 找到可以跑一圈的起始位置
class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {vector<int> diff(gas.size(), 0);int sum = 0;for (int i = 0; i < gas.size(); i++) {diff[i] = gas[i] - cost[i];sum += diff[i];}if (sum < 0) return -1;sum = 0;int pos = 0;for (int i = 0; i < diff.size(); i++) {sum += diff[i];if (sum < 0) {sum = 0;pos = i + 1;}}return pos;}
};

在这里插入图片描述

暴力解法
在这里插入图片描述


135. 分发糖果
在这里插入图片描述
在这里插入图片描述

  • 情况1: 右边小孩比左边大
    • ratings[i - 1] < ratings[i], 则 candy[i] = candy[i - 1] + 1
  • 情况2: 左边小孩比右边大

在这里插入图片描述


860.柠檬水找零
在这里插入图片描述
在这里插入图片描述
思路: 分清楚三种情况

  • 5 , 直接收下
  • 10, 找零 5
  • 20, 找零 3个5 或10+5

20时要分情况, 但优先使用10+5来找零

class Solution {
public:bool lemonadeChange(vector<int>& bills) {vector<int> count(3, 0); // 5 10 20 的数量for (int i = 0; i < bills.size(); i++) {if (bills[i] == 5)count[0]++;if (bills[i] == 10) {count[1]++;count[0]--;}if (bills[i] == 20) {count[2]++;if (count[1] > 0) {count[1]--;count[0]--;} else {count[0] -= 3;}}if (count[0] < 0)return false;}return true;}
};

406. 根据身高重建队列
在这里插入图片描述
在这里插入图片描述
涉及两个维度的操作, 需要分开解决

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

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

相关文章

SQLite数据库(数据库和链表双向转换)

文章目录 SQLite数据库一、SQLite简介1、SQLite和MySQL2、基于嵌入式的数据库 二、SQLite数据库安装三、SQLite的常用命令四、SQLite的编程操作1、SQLite数据库相关API&#xff08;1&#xff09;头文件&#xff08;2&#xff09;sqlite3_open()&#xff08;3&#xff09;sqlite…

vue3 computed与watch,watchEffect比较

相同点 都是要根据一个或多个响应式数据进行监听 不同点 computed 如要return回来一个新的响应式值&#xff0c;且这个值不允许直接修改&#xff0c;想要修改的话可以设置set函数&#xff0c;在函数里面去修改所依赖的响应式数据&#xff0c;然后计算属性值会基于其响应式依…

【秋招刷题打卡】Day02-二分系列之-二分查找

Day02-二分系列之-二分查找 前言 给大家推荐一下咱们的 陪伴打卡小屋 知识星球啦&#xff0c;详细介绍 >笔试刷题陪伴小屋-打卡赢价值丰厚奖励 < ⏰小屋将在每日上午发放打卡题目&#xff0c;包括&#xff1a; 一道该算法的模版题 (主要以力扣&#xff0c;牛客&#…

基于CPWM与DPWM综合调制的光伏逆变器

1. 光伏并网逆变器矢量控制 图 1 为光伏发电系统常用的逆变器拓扑结 构,太阳能光伏电池板发电所产生的直流电能接 入光伏并网逆变器直流侧。逆变器将电能逆变, 经过滤波器与隔离升压变压器连接,最终并入电 网。其中隔离变压器低压侧漏感与LC滤波器组 成LCL滤波。为便于分析…

android | studio的UI布局和代码调试 | UI调试 (用于找到项目源码)

网上找到一个项目&#xff0c;想快速的搞懂是怎么实现的&#xff0c;搞了半天发现原来android都升级到Jetpack Compose了&#xff0c;然后去找源码挺不容易的&#xff0c;摸索中发现了这个调试的方法&#xff0c;还可以。 https://developer.android.com/studio/debug/layout-i…

谷歌Chrome浏览器排查js内存溢出

1. 打开谷歌浏览器检查台 2. 点击memory 3. 点击开始快照录制&#xff0c;时隔一会儿录一次&#xff0c;多录几次 4. 进行快照对比

Java基础入门day67

day67 订单表设计 订单表 Orders订单表oidvarchar(32)主键订单编号uidint用户编号paytypevarchar(20)非空&#xff08;cash&#xff0c;alipay&#xff0c;wei&#xff09;pricedouble订单总价 create table orders(oid varchar(32) primary key,uid int,paytype varchar(20)…

JAVA学习笔记DAY11——Java 与 Spring框架发展

文章目录 Java 与 Spring框架发展ServletJDBC微服务 Java 与 Spring框架发展 Java SE平台对标的是Qt这类框架&#xff0c;主要用于桌面端应用&#xff0c;都支持跨平台开发。 随着互联网的发展&#xff0c;Java慢慢用于B/S开发。 服务器端和网页端连接、http相关的代码可以封装…

Kotlin基础——Typeclass

高阶类型 如在Iterable新增泛型方法时 interface Iterable<T> {fun filter(p: (T) -> Boolean): Iterable<T>fun remove(p: (T) -> Boolean): Iterable<T> filter { x -> !p(x) } }对应的List、Set实现上述方法时仍需要返回具体的类型 interfac…

【C++】STL中优先级队列的使用与模拟实现

前言&#xff1a;在前面我们学习了栈和队列的使用与模拟实现&#xff0c;今天我们来进一步的学习优先级队列使用与模拟实现 &#x1f496; 博主CSDN主页:卫卫卫的个人主页 &#x1f49e; &#x1f449; 专栏分类:高质量&#xff23;学习 &#x1f448; &#x1f4af;代码仓库:卫…

常见的8种排序(含代码):插入排序、冒泡排序、希尔排序、快速排序、简单选择排序、归并排序、堆排序、基数排序

时间复杂度O(n^2) 1、插入排序 (Insertion Sort) 从第一个元素开始&#xff0c;该元素可以认为已经被排序&#xff1b;取出下一个元素&#xff0c;在已经排序的元素序列中从后向前扫描&#xff1b;如果该元素&#xff08;已排序&#xff09;大于新元素&#xff0c;将该元素移到…

IPv6 address status lifetime

IPv6 地址状态转换 Address lifetime (地址生存期) 每个配置的 IPv6 单播地址都有一个生存期设置&#xff0c;该设置确定该地址在必须刷新或替换之前可以使用多长时间。某些地址设置为“永久”并且不会过期。“首选”和“有效”生存期用于指定其使用期限和可用性。 自动配置的…

vue中的状态管理

第1部分&#xff1a;引言 状态管理是应用中数据流动和变更的核心机制。在Vue应用中&#xff0c;状态管理不仅涉及到组件间的数据共享&#xff0c;还包括了数据的持久化、异步操作的处理等复杂场景。良好的状态管理策略可以提高应用的响应速度&#xff0c;降低组件间的耦合度&a…

spring使用redis作为消息订阅

redis可以用于消息订阅&#xff0c;下面一段代码实现了spring中使用redis作为消息订阅模型&#xff1a; 消息处理器&#xff1a; /*** 接口RedisMessageHandler:*/ public interface RedisMessageHandler {/*** 处理redis消息* param message redis消息* return 处理结果*/Str…

Electron录制-webm转mp4时长拉长问题

问题1 在导出视频时&#xff0c;发现最终导出视频的时长与实际录制的视频时长不一样&#xff0c;而且视频中某一帧会延迟。 猜想0 在项目中使用mp4-wasm导出mp4视频&#xff0c;同时利用canvas做一些效果&#xff0c;猜想是在canvas处理时有延迟。但是当把canvas处理效果全部…

分页查询前端对接

文章目录 添加角色修改角色当点击修改按钮后,那么就会弹出对话框,所以要设置显示为true点击修改的时候就是 要显示对话框 制作用户管理页面开发后端接口用户查询前端整合新增接口功能实现修改 添加角色 首先添加 添加表单的组件 那么总结一下 就是使用 组件 然后再使用变量接…

面试题2:从浏览器输入一个URL,到最终展示前端页面这一过程,会发生什么?

这是一个高频的面试题目。 题目答案是开放性的&#xff0c;一般以后端开发的角度回答。 当地址栏输入一个 URL 后&#xff1a; 一、首先会进行 DNS 域名解析 DNS 域名解析&#xff1a;网络上的设备都是通过 IP 地址&#xff0c;作为身份标识的。但是由于点分十进制的 IP 地址 …

Python基础入门

目录 1. 什么是Python&#xff1f; 2. 安装Python 3. Python基础语法 4. 数据结构 5. 文件操作 6. Python标准库 总结 1. 什么是Python&#xff1f; Python是一种高级编程语言&#xff0c;由Guido van Rossum于1991年发布。它以其简单易读的语法和强大的功能而闻名&…

Nominatim免费的地址解析,逆地址解析,OpenStreetMap开源地图数据【全网最全】

视频学习地址 国内的一些地址解析供应商的API都开始付费了&#xff0c;就想找个免费的地址解析和逆地址解析的应用&#xff0c;最终选择了Nominatim OpenStreetMap 文章目录 一、选型1-1、数据源1-2、地理编码引擎2-1、初尝Nominatim2-1-1、地址解析2-1-2、逆地址解析 2-2、OS…

国内外大模型生态发展报告!

很多同学只知类似Check GPT或者说对国内的一些比较了解&#xff0c;对国外的不太了解&#xff0c;所以在这总结。 1 大模型的发展 左表 名称参数特点发布时间GPT-215亿英文底模&#xff0c;开源2019年Google T5110亿多任务微调, 开源2019年GPT-3.51750亿人工反馈微调2022年M…