代码随想录 Day-23

力扣题目 406.根据身高重建队列

思路

这里可以看出来是有两个维度考虑,和力扣题目 135.分发糖果(可以看我day-22的文章) 有点类似。

因此遇到这种两个维度权衡的时候,一定是先考虑一个维度再按照另一个维度来重新考虑排序。

两个维度一起考虑一定会顾此失彼。

  • 局部最优:优先按身高来排序,再按照k的大小来排序
  • 全局最优:最后完成按k插入操作,整个队列,满足题目队列的属性

class Solution {
    public int[][] reconstructQueue(int[][] people) {
        //先按身高来排序
        Arrays.sort(people, (o1,o2)->{
            //h升高相同时
            if(o1[0] == o2[0])
                return o1[1] - o2[1];   //这里是当h身高相同时,按k的升序排序

            //h身高不相同时,则按降序来排序
            return o2[0] - o1[0];
        });

        LinkedList<int[]> queue = new LinkedList<>();

        for(int[] person : people){
            //LinkedList.add(index, value),会将value 插入到指定index里
            queue.add(person[1],person);
        }

        //记得转化为数组
        return queue.toArray(new int[people.length][]);
    }
}

Tips:

对于插入和删除操作,LinkedList优于ArrayList,因为当元素被添加到LinkedList任意位置的时候,不需要像ArrayList那样重新计算大小或者是更新索引

要是对Lambda表达式不熟悉的可以点击下方链接跳转学习

JDK之Arrays的Lambda表达式


力扣题目 452.用最少数量的剪引爆气球

class Solution {
    public int findMinArrowShots(int[][] points) {
        //做一个剪枝
        if(points.length == 0)
            return 0;

        //首先按照start来排序
        Arrays.sort(points, (o1, o2) -> 
            //{return o1[0] - o2[0];}   //按照start的升序来排序
            Integer.compare(o1[0], o2[0])
        );

        //因为是i与i-1比较,所以需要i初始值为1,才不会出现负值
        //既然i初始值不为0,那么result初始值应该是1
        int result = 1; 

        //i的start的与i-1的end比较
        for(int i=1; i<points.length; i++){
            if(points[i][0] > points[i-1][1])
                result ++;

            else
                //不然就是小于等于的情况,所以更新重叠气球的最小右边界,判断下一个是否重叠
                points[i][1] = Math.min(points[i][1], points[i-1][1]);
            
        }

        return result;

    }
}

 要是对Lambda表达式不熟悉的可以点击下方链接跳转学习

JDK之Arrays的Lambda表达式

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

YOLOv9有效改进|使用iRMB与RepNCSPELAN4融合

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;助力高效涨点&#xff01;&#xff01;&#xff01; 一、改进点介绍 iRMB是CVPR2023即插即用的到残差注意力机制。 本文使用iRMB与RepNCSPELAN4进行融合 二、iRMB-RepNCSPELAN4模块详解 2.1 模块简介 这…

Codeforces Round 935 (Div. 3)A~E

A. Setting up Camp 题目分析: 有三种人&#xff0c;内向、外向、综合&#xff0c;内向必须独自一个帐篷&#xff0c;外向必须3个人一个帐篷&#xff0c;综合介于1~3人一个帐篷&#xff0c;我们发现非法情况只会存在外向的人凑不成3个人一个帐篷的情况&#xff0c;因外向不够可…

AI视频激光综合驱鸟装置:全自动、大范围驱鸟 | 真驱鸟科技

在电力系统中&#xff0c;鸟害事故已成为一个不容忽视的问题&#xff0c;直接威胁到电网的正常运行。但鸟类拥有极强的环境适应能力&#xff0c;它们能够在各种环境中生存和繁衍。这种强大的适应性使得传统的单一功能驱鸟器&#xff0c;在面对鸟类时显得力不从心&#xff0c;无…

用OceanBase binlog service 轻松进行数据回滚

背景 在日常的数据库运维过程中&#xff0c;难免会遭遇数据误操作的情形&#xff0c;比如因疏忽而执行了非预期的delete或update操作&#xff0c;这时就需要进行数据回滚。如果在OceanBase中启用了回收站功能&#xff0c;并设置了合适的undo_retention&#xff0c;那么我们可以…

【Frida】10_用鼠标自动标记棋盘上的雷区(一键过关)

&#x1f6eb; 系列文章导航 【Frida】 00_简单介绍和使用 https://blog.csdn.net/kinghzking/article/details/123225580【Frida】 01_食用指南 https://blog.csdn.net/kinghzking/article/details/126849567【Frida】02_常见API示例及功能函数封装&#xff08;snippets&#…

上海亚商投顾:沪指窄幅震荡微跌 低空经济概念股持续爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日高开后回落&#xff0c;整体呈现小幅调整走势。低空经济概念持续爆发&#xff0c;永悦科技8连板&…

html5cssjs代码 032 边框属性示例

html5&css&js代码 032 边框属性示例 一、代码二、解释 该HTML文件定义了一个网页页面&#xff0c;主要介绍了HTML5中CSS边框属性的用法。 一、代码 <!DOCTYPE html> <html lang"zh-cn"><head><title>编程笔记 html5&css&j…

银河麒麟系统安装设备类型选择lvm简单模式之后,数据写入导致失败导致系统重启无法正常加载

银河麒麟系统安装设备类型选择lvm简单模式之后&#xff0c;数据写入导致失败导致系统重启无法正常加载 一 系统环境1.1 系统版本信息1.2 通过镜像安装的过程中选择设备类型选择的是lvm简单模式 二 问题描述三 问题修复过程3.1 挂载ISO镜像&#xff0c;引导到字符终端界面3.2 修…

什么是ip公网?

一、概念和作用 在计算机网络中&#xff0c;IP&#xff08;Internet Protocol&#xff09;是一种网络协议&#xff0c;用于将数据包从源主机传输到目标主机。而公网指的是能够被所有人访问的网络&#xff0c;与之相对应的是私有网络。IP公网即指能够在公共互联网中被访问和使用…

关系型数据库mysql(3)索引

目录 一.索引的概念 二.索引的作用 三.创建索引的原则依据 四.索引的分类 五.索引的创建 5.1 普通索引 5.1.1 直接创建索引 5.1.2 修改表方式创建 5.1.3 创建表的时候指定索引 5.2 唯一索引 5.2.1 直接创建唯一索引 5.2.2 修改表方式创建 5.2.3 创建表的时候指…

HTTP协议1

官网学习网址&#xff1a;HTTP | MDN 常规信息 常规请求头信息&#xff1a; 状态码&#xff1a; 200 正常响应 404 未找到资源 500 服务端一场的 3** 重定向 资源缓存 响应头信息&#xff1a; 客户端允许的请求方法类型 Access-Control-Allow-Methods: GET, POST, PUT, DELET…

1.3 Python是什么

Python是什么&#xff0c;Python简介 Python 是荷兰人 Guido van Rossum &#xff08;吉多范罗苏姆&#xff0c;中国程序员称其为“龟叔”&#xff09;在 1990 年初开发的一种解释型编程语言。 图1&#xff1a;Python 的标志&#xff08;Logo&#xff09; Python 的诞生是极具…

几个常用的控件(2)

目录 一、单选按钮Radiobutton和RadioButtonList 1、Radiobutton控件 &#xff08;1&#xff09;button控制方式 &#xff08;2&#xff09;Radiobutton控制方式 2、RadiobuttonList控件 二、列表框ListBox和下拉列表DropdownList 1、ListBox 2、DropdownList 三、面板…

macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题

如果你通过 sudo port install 命令正常安装了 MySQL&#xff0c;再通过 sudo port load 命令启动了 MySQL Server&#xff0c;此刻却发现使用 Navicat 之类的 GUI 软件无法连接&#xff0c;始终返回无法连接到 127.0.0.1 服务器。这是一个小坑&#xff0c;因为他默认使用了 So…

(day 15)JavaScript学习笔记(对象3)

概述 这是我的学习笔记&#xff0c;记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript&#xff0c;那么这一系列的学习笔记可能会对你有所帮助。 今天继续学习对象&#xff0c;主要是Object.create()、原型链、修改原型指…

IPv6介绍

IPv6&#xff08;互联网协议版本6&#xff09;是用于互联网的最新网络层通信协议&#xff0c;旨在解决IPv4地址耗尽的问题&#xff0c;并提供了多项改进。IPv6于1998年由互联网工程任务组&#xff08;IETF&#xff09;标准化&#xff0c;作为IPv4的后继者。下面是IPv6的一些详细…

Linux - 应用层HTTPS、传输层TCP/IP模型中典型协议解析

目录 应用层&#xff1a;自定制协议实例 HTTP协议首行头部空行正文http服务器的搭建 HTTPS协议 传输层UDP协议TCP协议 应用层&#xff1a; 应用层负责应用程序之间的沟通—程序员自己定义数据的组织格式 应用层协议&#xff1a;如何将多个数据对象组织成为一个二进制数据串进行…

【文末附gpt升级4.0方案】英特尔AI PC的局限性是什么

为什么要推出英特尔AI PC&#xff1f; 英特尔AI PC的推出无疑为AIGC&#xff08;生成式人工智能&#xff09;的未来发展开启了一扇新的大门。这种新型的计算机平台&#xff0c;通过集成先进的硬件技术和优化的软件算法&#xff0c;为AIGC提供了更为强大和高效的支持&#xff0…

【探讨】基于卷积神经网络深度学习模型的光场显微三维粒子空间分布重建

光场显微粒子图像测速技术通过单光场相机即可实现微尺度三维速度场的测量&#xff0c;但单光场相机角度信息有限&#xff0c;导致粒子重建的轴向分辨率低、重建速度慢。基于此&#xff0c;提出一种基于卷积神经网络深度学习模型的光场显微粒子三维空间分布重建方法&#xff0c;…

说说你对webpack的理解?解决了什么问题?

文章目录 一、背景二、问题三、是什么参考文献 一、背景 Webpack 最初的目标是实现前端项目的模块化&#xff0c;旨在更高效地管理和维护项目中的每一个资源 模块化 最早的时候&#xff0c;我们会通过文件划分的形式实现模块化&#xff0c;也就是将每个功能及其相关状态数据各…