代码随想录算法训练营day35 || 860.柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

视频讲解:

贪心算法,看上去复杂,其实逻辑都是固定的!LeetCode:860.柠檬水找零_哔哩哔哩_bilibili

贪心算法,不要两边一起贪,会顾此失彼 | LeetCode:406.根据身高重建队列_哔哩哔哩_bilibili

贪心算法,判断重叠区间问题 | LeetCode:452.用最少数量的箭引爆气球_哔哩哔哩_bilibili

860.柠檬水找零

思路:没有特别明确的贪心思想,可能涉及到贪心的思想就是在处理找零15元时,优先消耗10元的纸币,没有10元的,但消耗3张5元的。本题的关键就是统计5元,10元纸币的数量,虽然是有必要统计一下总共的利润来评估是否还有钱来找零,但是所有的找零都是花费的5元和10元,所以20元的无需统计,那么总利润统计也就没有意义,只要剩余的5元和10元纸币的数量可以应付所有找零,那么本题就可以返回true;反之返回一个false。

// 时间复杂度O(n)
// 空间复杂度O(1)class Solution {public boolean lemonadeChange(int[] bills) {// 思路和昨天的加油站的第二种解法非常的类似// 分别用于计数5元,10元,20元int five = 0;int ten = 0;for(int i=0; i<bills.length; i++){// 首先收取顾客的钱if(bills[i] == 5)five++;else if(bills[i] == 10)ten++;// 计算当前的找零int change = bills[i] - 5;if(change == 0)continue;else if(change==5 && five>0)five--;else if(change==15 && ten>0 && five>0){// 找零15的时候应当优先消耗10元,这就是贪心的一部分five--;ten--;}else if(change == 15 && five>=3)five -= 3;elsereturn false;}return true;}
}

406. 根据身高重建队列

思路:参考 代码随想录 的思路解出。明确涉及两个维度需要控制的题目时,优先确定一个维度然后再去操作另一个维度,即优先将一个维度的关系确定,然后再此基础上再去确定另一个维度。与此相同思路的题目中分发糖果,参考的左右两个相邻的位置,因此也是两个维度。

// 时间复杂度O(nlogn),是Arrays.sort()的时间复杂度
// 空间复杂度O(n)class Solution {public int[][] reconstructQueue(int[][] people) {Arrays.sort(people, (a,b)->{if(a[0] == b[0])    return a[1]-b[1];return b[0]-a[0];});List<int[]> que = new ArrayList<>();// 现在完成排序的people数组是h按照从大到小,k在h相同时才会使用到作为从小到大,用来维护之后进行赋值时的索引正确性// 而可以直接插入的缘故就是,将一个小的数加入到他的前面去不影响之前的数的h和k,因为之前的数的h都比当前数的h来的大for(int[] p:people)que.add(p[1], p);return que.toArray(new int[people.length][]);}
}

452. 用最少数量的箭引爆气球

思路:新的一种类型的题目——“重叠区间”。首先自己实现了这道题的题解,认为重叠区间类型题目的解题就是合并存在交集的区间,然后统计最终还剩下几个相互独立的区间;而贪心的策略就是如果可以时间效率最小的情况下完成区间的合并。在这个思路和两个维度的确定一个维度比较像,优先确定所有区间的下限的关系,然后再判断区间彼此之间是否存在交集,存在交集即融合即可。

// 时间复杂度O(nlogn),排序耗时
// 空间复杂度O(n)class Solution {public int findMinArrowShots(int[][] points) {// 尝试先做,思路是计算重合的区间个数if(points.length == 1)return 1;// 按照起始的位置从小到大排列,注意这里需要自己写大小判断,然后返回负数还是正数,因为采用a[0]-b[0]的方式会存在数值越界的情况Arrays.sort(points, (a,b)->{if(a[0] < b[0]) return -1;if(a[0] == b[0]) return 0;return 1;});List<int[]> scopes = new ArrayList<>();int[] cur = points[0];scopes.add(points[0]);// cur保存当前区间下限最小的,开始进行区间的合并for(int i=1; i<points.length; i++){if( (long)points[i][0] > (long)cur[1] ){scopes.add(points[i]);cur = points[i];}else{cur[0] = Math.max(cur[0], points[i][0]);cur[1] = Math.min(cur[1], points[i][1]);}}return scopes.size();}
}

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

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

相关文章

自然语言处理(NLP)技术使用

自然语言处理&#xff08;NLP&#xff09;技术使用 以下是一些自然语言处理&#xff08;NLP&#xff09;技术的例子&#xff1a;以上只是一些NLP技术的例子&#xff0c;还有许多其他的技术和应用&#xff0c;如文本分类、文本生成、问答系统等。NLP技术的发展正逐渐改变人们与计…

手撕红黑树

目录 性质 插入规则 调整方法 插入在grandfather的左子树 uncle存在为红色&#xff08;变色&#xff09; uncle不存在或存在为黑色&#xff08;旋转变色&#xff09; 插入在grandfather的右子树 uncle存在且为红色&#xff08;变色&#xff09; uncle不存在或者存在为黑…

Whatsapp 相关(七) -网络请求

本篇主要用来完善上篇文章 frida 监测网络请求的. whatsapp相关(五)- frida监测网络请求 1: 脚本 本次的脚本与上次的区别是,之前只能输出请求的地址,本次优化后,可输出请求参数,结果等. 代码如下: Java.perform(function () {var HttpURLConnection Java.use(java.net.H…

Bean 的作用域有哪些?

Spring 中 Bean 的作用域通常有下面几种&#xff1a; singleton : IoC 容器中只有唯一的 bean 实例。Spring 中的 bean 默认都是单例的&#xff0c;是对单例设计模式的应用。prototype : 每次获取都会创建一个新的 bean 实例。也就是说&#xff0c;连续 getBean() 两次&#x…

Vue之初识路由

路由有什么用&#xff1f; 在我们修改地址栏路径时&#xff0c;切换显示匹配的组件 VueRouter的使用(5 2) 5个基础步骤(固定) 1.下载:下载 VueRouter模块到当前工程&#xff0c;版本3.6.5 yarn add vue-router3.6.5 npm i vue-router3.6.52.引入 import VueRouter from v…

如何在DBeaver中重命名数据库

前言 DBeaver是一款强大的开源通用数据库管理和开发工具&#xff0c;支持多种数据库类型。在某些数据库系统中&#xff0c;你可以直接通过DBeaver的图形界面来重命名数据库名称。本文将详细介绍如何在DBeaver中进行数据库重命名操作。 重要提示&#xff1a; 对于不同的数据库…

15EG使用vivado2021.1实现LWIP的网络传输

创建工程模板在hello_world中已经介绍过了&#xff0c;这里直接从配置完zynq ip核开始&#xff0c;由于使用vivado的版本不同&#xff0c;配置ZYNQ时需要用到的tcl文件我会放在工程文件夹下的file文件夹中 配置好IP核后&#xff0c;右键设计模块&#xff0c;点击Generate Outpu…

【通信系统】MIMO阵列信号来向DOA估计实现~含FOCUSS、OMP、贝叶斯学习(SBL)等稀疏重构法和常规、子空间法、空间平滑滤波法

MIMO阵列目标信号来向估计原理与实现~基于常规法、子空间变换法和稀疏恢复法 写在最前前言空间谱估计的历史发展 仿真原理离散时间阵列信号模型波束形成矩阵(完备字典)回波生成空间平滑滤波传统方法CBF~常规波束成型Capon~最小方差无失真响应法ML~最大似然估计法 子空间方法MUS…

05. 交换机的基本配置

文章目录 一. 初识交换机1.1. 交换机的概述1.2. Ethernet_ll格式1.3. MAC分类1.4. 冲突域1.5. 广播域1.6. 交换机的原理1.7. 交换机的3种转发行为 二. 初识ARP2.1. ARP概述2.2. ARP报文格式2.3. ARP的分类2.4. 免费ARP的作用 三. 实验专题3.1. 实验1&#xff1a;交换机的基本原…

十一:常用类

文章目录 01、字符串相关的类1.1、理解String的不可变性1.2、String不同实例化方式的对比1.3、String不同拼接操作的对比1.3.1、String使用陷阱 1.4、String的一道面试题1.5、JVM中涉及字符串的内存结构1.6、String的常用方法11.7、String的常用方法21.8、String的常用方法31.9…

防御保护笔记02

防火墙 防火墙的主要职责在于&#xff1a;控制和防护 ---- 安全策略 --- 防火墙可以根据安全策略来抓取流量 防火墙分类 按物理特性划分 软件防火墙 硬件防火墙 按性能划分 百兆级防火墙 吞吐量&#xff1a;指对网络、设备、端口、虚电路或其他设施&#xff0c;单位时间内成…

.locked.locked1勒索病毒爆发:如何有效保护和恢复您的文件

引言&#xff1a; 随着网络犯罪的不断演变&#xff0c;.locked.locked1勒索病毒成为当前数字世界中的一项威胁。本文将深入介绍.locked.locked1勒索病毒的特征&#xff0c;提供一些建议的数据恢复方法&#xff0c;并分享一些预防措施&#xff0c;以确保用户的数据免受威胁。如…

JS和CSS实现的原生轮播图

JSCSS实现滑动轮播图 使用JS加CSS来实现的幻灯片&#xff0c;主要使用的是CSS的transform属性中的translate来实现&#xff0c;适合与用户交互的轮播图&#xff0c;展现轮播图的数量&#xff0c;用户可自由进行选择。 <!DOCTYPE html> <html lang"en">&…

实际项目演示:Python RegEx在数据处理中的应用!

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 正则表达式&#xff08;Regular Expressions&#xff0c;简称 RegEx&#xff09;是一种强大的文本匹配和搜索工具&#xff0c;它在数据处理、文本解析和字符串操作中发挥着关键作用。Python 提供了内置的 re 模块…

C++模板函数

类型推断 模板在编译过程中&#xff0c;会进行类型推断&#xff0c;平时使用到隐式类型转换&#xff08;自动类型转换&#xff09;&#xff0c;在类型推断时&#xff0c;几乎全部失效。经常用到的隐式类型转换包含以下几种&#xff1a; 从低精度类型到高精度类型的转换&#x…

IDEA新建项目,但是Spring Initializr最低17

目录 问题解决 问题 在IDEA中新建项目&#xff0c;使用Spring Initializr的方式&#xff0c;但是java版本只有17和21 但是它高任它高&#xff0c;我只搞Java8 解决 替换源&#xff0c;即更换Server URL&#xff0c;改为https://start.aliyun.com 然后就可以用Java8 了

CTFHub:web-LD_PRELOAD-WP

解题思路 思路分析 根据资料可得知有四种绕过 disable_functions 的手法&#xff1a; 攻击后端组件&#xff0c;寻找存在命令注入的 web 应用常用的后端组件&#xff0c;如&#xff0c;ImageMagick 的魔图漏洞、bash 的破壳漏洞等等寻找未禁用的漏网函数&#xff0c;常见的执…

【数据结构】(二)线性表List

目录 1、基本概念 2、栈&#xff08;Stack&#xff09; 3、队列&#xff08;Queue&#xff09; 4、串&#xff08;String&#xff09; 1、基本概念 &#xff08;1&#xff09;线性表是零或多个数据元素的有限序列。 &#xff08;2&#xff09;数组长度指存储空间长度&…

Kotlin快速入门系列6

Kotlin的接口与扩展 接口 与Java类似&#xff0c;Kotlin使用interface关键字定义接口&#xff0c;同时允许方法有默认实现&#xff1a; interface KtInterfaceTest {fun method()fun methodGo(){println("上面方法未实现&#xff0c;此方法已实现")} } 接口实现 …

Codeforces Round 898 (Div. 4)

目录 A. Short Sort B. Good Kid C. Target Practice D. 1D Eraser E. Building an Aquarium F. Money Trees G. ABBC or BACB H. Mad City A. Short Sort 这种判断是否能变成目标串的我们都是通过一定手段然后看最后是否是直接变成目标串即可 void solve(){string s; …