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

news2024/9/24 3:21:38

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

  • 860.柠檬水找零
  • 406.根据身高重建队列
  • 452. 用最少数量的箭引爆气球


860.柠檬水找零

教程视频:https://www.bilibili.com/video/BV12x4y1j7DD/?spm_id_from=333.788&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述
在这里插入图片描述

有如下三种情况:
情况一:账单是5,直接收下。
情况二:账单是10,消耗一个5,增加一个10
情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5
class Solution {
    public boolean lemonadeChange(int[] bills) {
        int five = 0;
        int ten = 0;

        for (int i = 0; i < bills.length; i++) {
            if (bills[i] == 5) {
                five++;
            } else if (bills[i] == 10) {
                five--;
                ten++;
            } else if (bills[i] == 20) {
                if (ten > 0) {
                    ten--;
                    five--;
                } else {
                    five -= 3;
                }
            }
            if (five < 0 || ten < 0) return false;
        }
        
        return true;
    }
}

406.根据身高重建队列

教程视频:https://www.bilibili.com/video/BV1EA411675Y/?spm_id_from=333.788&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述本题类似135.分发糖果,如果两个维度一起考虑一定会顾此失彼。
按照身高h来排序,身高一定是从大到小排(身高相同的话则k小的站前面),让高个子在前面。此时我们可以确定身高维度了,前面的节点一定都比本节点高!那么只需要按照k为下标重新插入队列就可以了。

所以在按照身高从大到小排序后:
局部最优: 优先按身高高的people的k来插入。插入操作过后的people满足队列属性
全局最优: 最后都做完插入操作,整个队列满足题目队列属性

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        //按照身高降序排序,如果身高相等k按照升序排列
        Arrays.sort(people, (p1, p2)->{//这是Comprator的简化,返回正数调换位置
            if(p1[0]==p2[0]){return p1[1]-p2[1];}
            return p2[0]-p1[0];
        });

        LinkedList<int[]> que = new LinkedList<>();
        for(int i=0; i<people.length; i++){
            que.add(people[i][1],people[i]);//这里巧妙地使用了LinkedList的add方法模拟了元素插入过程
        }

        return que.toArray(new int[people.length][]);
    }
}

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

教程视频:https://www.bilibili.com/video/BV1SA41167xe/?spm_id_from=333.788&vd_source=ddffd51aa532d23e6feac69924e20891
在这里插入图片描述在这里插入图片描述

局部最优:当气球出现重叠,一起射,所用弓箭最少。
全局最优:把所有气球射爆所用弓箭最少。
为了让气球尽可能的重叠,需要对数组进行排序。下面题解是使用气球起始位置排序实现的,也可以使用终止位置排序,只是遍历顺序需要调整。
【注意】这里排序时可能会溢出,需要使用Integer内置比较方法Integer.comare(a,b)

class Solution {
    public int findMinArrowShots(int[][] points) {
        //没有气球时,不需要射击
        if(points.length==0)return 0;
        //按照左边界排序
        // 使用Integer内置比较方法,不会溢出
        Arrays.sort(points,(p1, p2)->Integer.compare(p1[0],p2[0]));
        
        int shot = 1;//有气球时,至少射击一次
        for(int i=1;i<points.length;i++){
            //上一个右边界与下一个左边界不重合需要一次射击
            if(points[i-1][1]<points[i][0]){
                shot++;
            }else{
                //重合则更新最小右边界
                points[i][1] = Math.min(points[i-1][1],points[i][1]);
            }
        }
        return shot;
    }
}

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

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

相关文章

3.SpringBoot开发实用篇

SpringBoot开发实用篇 ​ 开发实用篇中因为牵扯到SpringBoot整合各种各样的技术&#xff0c;由于不是每个小伙伴对各种技术都有所掌握&#xff0c;所以在整合每一个技术之前&#xff0c;都会做一个快速的普及&#xff0c;这样的话内容整个开发实用篇所包含的内容就会比较多。各…

推荐系统综述

这里写目录标题 推荐系统架构1、传统推荐方式1.1 基于内容推荐&#xff08;Content-Based recommendation&#xff0c;CB&#xff09;1.2 协同过滤推荐&#xff08;Collaborative Filtering recommendation&#xff0c; CF&#xff09;1.2.0 UserCF举例&#xff1a;1. 2. 1 基于…

window-2016服务器;服务——活动目录

♥️作者&#xff1a;小刘在C站 ♥️个人主页&#xff1a;小刘主页 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️树高千尺&#xff0c;落叶归根人生不易&…

OpenCL编程指南-2.1HelloWorld

在windows下编写HelloWorld 按照前面文章搭建好OpenCL的环境https://blog.csdn.net/qq_36314864/article/details/130513584 main函数完成以下操作&#xff1a; 1&#xff09;在第一个可用平台上创建OpenCL上下文 2&#xff09;在第一个可用设备上创建命令队列 3&#xff09;…

第二期 | ICASSP 2023 论文预讲会

ICASSP 2023 论文预讲会是由CCF语音对话与听觉专委会、语音之家主办&#xff0c;旨在为学者们提供更多的交流机会&#xff0c;更方便、快捷地了解领域前沿。活动将邀请 ICASSP 2023 录用论文的作者进行报告交流。 ICASSP 2023 论文预讲会邀请到清华大学人机语音交互实验室&…

单细胞跨模态分析综述

单细胞技术的最新进展使跨模态和组织位置的细胞高通量分子分析成为可能。单细胞转录组数据现在可以通过染色质可及性、表面蛋白表达、适应性免疫受体库分析和空间信息进行补充。跨模态单细胞数据的可用性越来越高&#xff0c;推动出新的计算方法&#xff0c;以帮助科学家获得生…

图的遍历——深度优先搜索(DFS)与广度优先搜索(BFS)(附带C语言源码)

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️数据结构与算法】 学习名言&#xff1a;天子重英豪&#xff0c;文章教儿曹。万般皆下品&#xff0c;惟有读书高——《神童诗劝学》 系列文章目录 第一章 ❤️ 学前知识 第二章 ❤️ 单向链表 第三章…

mysql数据迁移与同步常用解决方案总结

目录 一、前言 二、数据迁移场景 2.1 整库迁移 2.2 表数据迁移 2.3 mysql版本变更 2.4 mysql数据迁移至其他存储介质 2.5 自建数据到上云环境 2.6 mysql数据到其他国产数据库 三、数据库物理迁移实施方案 3.1 数据库物理迁移概述 3.1.1 物理迁移适用场景 3.1.2 物理…

杂记 2023.5.10

目录 韦伯和斯托亚科维奇是谁&#xff1f; 介绍一下kali FastDFS和Sentinel是什么&#xff1f; Inferno 找工作的影响因素 1. 背景&#xff1a; 2. 学习过程&#xff1a; 2.1 计算机基础&#xff1a; 2.2 语言&#xff1a; 2.3 数据库等&#xff1a; 2.4 JVM&#…

月薪17k需要什么水平?98年测试员的面试全过程…

我的情况 大概介绍一下个人情况&#xff0c;男&#xff0c;本科&#xff0c;三年多测试工作经验&#xff0c;懂python&#xff0c;会写脚本&#xff0c;会selenium&#xff0c;会性能&#xff0c;然而到今天都没有收到一份offer&#xff01;从年后就开始准备简历&#xff0c;年…

Linux操作系统如何查看CPU型号信息?一条命令搞定

Linux操作系统服务器如何查看CPU处理器信息&#xff1f;使用命令cat /proc/cpuinfo可以查看CPU详细信息&#xff0c;包括CPU核数、逻辑CPU、物理CPU个数、CPU是否启用超线程等&#xff0c;阿里云服务器网分享Linux服务器查看CPU信息命令&#xff1a; 目录 Linux服务器查看CPU…

Visual Studio Code 1.78 发布!

欢迎使用 Visual Studio Code 2023 年 4 月版。一些主要亮点包括&#xff1a; 辅助功能改进 - 更好的屏幕阅读器支持、新的音频提示。新颜色主题 - “现代”浅色和深色主题默认设置。配置文件模板 - Python、Java、数据科学等的内置模板。拖放选择器 - 选择您希望如何将项目链…

【AI】YOLOV2原理详解

1、简介 Yolov2采用了Darknet-19特征提取网络,包括19个卷积层和5个maxpooling层,网络结构如下: 也有尝试使用ResNet-50作为特征提取的模型,网络结构如下: 2、YOLOV2的改进 2.1 加入批归一化(Batch Nomalization) 对数据进行预处理(统一格式、均衡化、去噪等)…

隐语团队研究成果再创佳绩,两篇论文分别被USENIX ATC‘23和IJCAI‘23接收!

‍“USENIX ATC‍年度技术会议”&#xff08;USENIX ATC&#xff0c;USENIX Annual Technical Conference&#xff09;是计算机系统领域的顶级学术会议之一。本年度 USENIX ATC’23将于7月10日至12日在美国波士顿召开。本次会议共投稿353篇论文&#xff0c;接收65篇&#xff0c…

【Redis】电商项目秒杀问题之超卖问题与一人一单问题

目录 一、超卖问题 1、背景 2、产生原因以及线程安全问题 3、解决 1.悲观锁 2.乐观锁 4、新的问题 5、解决 二、一人一单 1、背景 2、产生原因以及线程安全问题 3、解决 4、新的问题----集群下的并发安全问题 5、解决 三、集群下的并发问题 1、说明 2、解决 一…

如何将ChatGPT训练成某个领域的专家!附完整示例!

背景 最近听了 八叉的一个ChatGPT讲座&#xff0c;讲的是如何将ChatGPT训练成领域专家&#xff0c;这样我们就可以用它来解决该领域的各种问题。 整个讲座中最让我印象深刻的就是训练方法&#xff0c;它是通过让ChatGPT向我们提问&#xff0c;然后由我们给出答案的方式进行训…

牛客 BM40 重建二叉树

描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出如下图所示。 提示: 1.vin.length pre.length 2.pre 和 vin 均无重复元素…

Redis未授权漏洞复现

Redis简介 Redis是C语言开发的一个开源高性能&#xff08;key-value&#xff09;键值对类型的内存NoSQL数据库&#xff0c;可以用作数据库、缓存、信息中间件(性能非常优秀&#xff0c;支持持久化到硬盘且高可用)。由于其自身特点&#xff0c;可以广泛应用在数据集群&#xff…

threeJs进阶 让模型沿着指定轨迹移动与转向

效果图&#xff1a; 涉及相关知识点&#xff1a; 欧拉对象和四元数主要用来表达对象的旋转信息。 关键词&#xff1a;欧拉Euler、四元数Quaternion、矩阵Matrix4 欧拉对象Euler 欧拉角描述一个旋转变换&#xff0c;通过指定轴顺序和其各个轴向上的指定旋转角度来旋转一个物体…

小红书达人等级有哪些,达人种草力度判断

小红书对于产品及品牌的传播作用&#xff0c;来自于达人自身的分享。以笔记为媒介&#xff0c;对产品进行情景化展示&#xff0c;从而吸引消费&#xff0c;就被称作是种草。而种草力度的强弱&#xff0c;则与达人等级息息相关。下面&#xff0c;就来跟详细为大家解读。 一、小红…