代码随想录算法训练营第三十三天|452. 用最少数量的箭引爆气球、 435. 无重叠区间、 763.划分字母区间

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

在这里插入图片描述

题目链接:452. 用最少数量的箭引爆气球
文档讲解:代码随想录
状态:没想出来

思路:对气球终点位置排序,从第一个气球终点位置射出箭,看这支箭可以尽可能穿过几个气球,如果遇到一个气球的起点在当前箭的终点之后,说明当前这支箭不能再穿过这个气球了,需要再射出一支新的箭,并将新的箭的终点设为当前气球的终点。

题解:

        // 按照气球的结束位置进行排序Arrays.sort(points, Comparator.comparingInt(a -> a[1]));// 初始化箭的数量为1,因为至少需要一支箭int arrNum = 1;// 初始化第一支箭的位置为第一个气球的结束位置int end = points[0][1];// 遍历所有气球for (int[] point : points) {// 如果当前气球的开始位置大于箭的结束位置,说明需要新的箭if (point[0] > end) {arrNum++; // 增加箭的数量end = point[1]; // 更新箭的位置为当前气球的结束位置}}// 返回所需的箭的数量return arrNum;

435. 无重叠区间

在这里插入图片描述

题目链接:435. 无重叠区间
文档讲解:代码随想录
状态:还行

思路:先固定一边排序,然后考虑上个区间终点和当前区间的起点关系。

题解:

    //起点排序public int eraseOverlapIntervals1(int[][] intervals) {// 按照区间的起始位置进行排序Arrays.sort(intervals, Comparator.comparingInt(a -> a[0]));// 记录需要移除的重叠区间数量int remove = 0;// 记录当前处理的区间的结束位置int pre = intervals[0][1];// 从第二个区间开始遍历for (int i = 1; i < intervals.length; i++) {// 如果当前区间的起始位置小于前一个区间的结束位置,// 表示当前区间与前一个区间重叠if (pre > intervals[i][0]) {// 需要移除当前区间remove++;// 更新当前处理的区间的结束位置为当前区间结束位置和前一个区间结束位置的较小值pre = Math.min(pre, intervals[i][1]);} else {// 如果当前区间与前一个区间不重叠,更新当前处理的区间的结束位置为当前区间的结束位置pre = intervals[i][1];}}// 返回需要移除的重叠区间数量return remove;}//终点排序,(推荐)public int eraseOverlapIntervals(int[][] intervals) {// 根据区间的终点进行排序Arrays.sort(intervals, (a, b) -> Integer.compare(a[1], b[1]));int res = -1; // 初始化结果为 -1,因为第一个区间即使重叠也不算在移除计数中int end = intervals[0][1]; // 初始化end为第一个区间的终点// 遍历所有区间for (int[] interval : intervals) {if (interval[0] < end) { // 当前区间与前一个区间重叠res++; // 增加移除重叠区间的计数} else { // 当前区间不重叠end = interval[1]; // 更新end为当前区间的终点// end = Math.min(end, interval[1]); //因为是对终点进行排序的interval[1]肯定大于或等于 end,所以不需要这个,如果是对起点排序则不能少               }}return res; // 返回移除重叠区间的数量}

类似重叠区间问题解题模板:

  1. 排序:根据问题需求,通常推荐对区间的终点进行排序。
  2. 考虑上个区间的终点和当前区间的起点的关系:这是判断区间是否重叠的关键。
  3. 根据题意求解:根据具体问题的要求来计算结果,例如计算需要移除的区间数量,找到最多数量的无重叠区间等。

763.划分字母区间

在这里插入图片描述

题目链接:763.划分字母区间
文档讲解:代码随想录
状态:把问题想复杂了,写了一个划分片段最少的版本出来了。。。。

思路:

  1. 统计每一个字符最后出现的位置。
  2. 从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点。

题解:

    public List<Integer> partitionLabels(String s) {List<Integer> res = new ArrayList<>(); // 结果列表,用于存放每个片段的长度char[] chars = s.toCharArray(); // 将输入的字符串转换为字符数组,便于处理int[] counter = new int[26]; // 记录每个字符最后出现的位置for (int i = 0; i < chars.length; i++) {counter[chars[i] - 'a'] = i; // 更新字符对应的最后出现位置}int far = -1; // 当前片段的最远位置int start = 0; // 当前片段的起始位置for (int i = 0; i < chars.length; i++) {far = Math.max(far, counter[chars[i] - 'a']); // 更新当前片段的最远位置if (i == far) { // 如果当前位置是当前片段的结束位置res.add(i - start + 1); // 将当前片段的长度添加到结果列表中start = i + 1; // 更新下一个片段的起始位置}}return res; // 返回结果列表}

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

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

相关文章

Excel 宏录制与VBA编程 —— 12、日期相关

代码1 - 获取当前时间日期信息 代码2 - 时间日期格式 代码3 - 时间日期计算 代码4 - 时间日期案例 关注 笔者 - jxd

OceanBase v4.2 特性解析:如何用分页保序功能解决MySQL模式分页查询不稳定

导言 在MySQL业务迁移OceanBase过程中&#xff0c;经常遇到的一个问题是分页查询结果的不稳定性&#xff0c;这通常需要数据库DBA介入绑定执行计划。下面简单举个例子&#xff0c;以便大家更好地理解为什么有的分页查询&#xff0c;在原来的MySQL数据库下运行没有问题&#xf…

免费悬浮翻译器哪个好?测评5款悬浮翻译器

在享受休闲时光时&#xff0c;我们通常都希望不被打扰&#xff0c;对吧&#xff1f; 然而&#xff0c;有时打扰我们的并非是外界的干扰&#xff0c;而是在观看外语视频时&#xff0c;无法理解视频内容的烦躁感。 不过&#xff0c;今天本文将为大家揭开几款屏幕悬浮翻译软件的…

Python 脚本文件如何重新启动自身进程

有时候&#xff0c;我们需要重新启动正在运行的 Python 脚本程序。这不是简单的关闭程序再运行&#xff0c;需要从程序内部重新运行该程序。 使用 os.execv() 方法重新启动 Python 脚本。os.execv(path, args) 函数通过替换进程来执行新程序。 import os import sysdef resta…

基于Java协同过滤算法的图书推荐系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还…

深入理解二叉树遍历:前序、中序、后序和层级遍历的Java实现

前言 二叉树的遍历方式是对树中节点进行访问的方法&#xff0c;常见的包括前序、中序、后序和层级遍历。本文将深入探讨这些遍历方式的实现原理&#xff0c;并使用Java代码和图示进行详细讲解。 二叉树遍历介绍 在二叉树中&#xff0c;遍历指的是按照一定顺序访问树中的所有…

ctr/cvr预估之WideDeep模型

ctr/cvr预估之Wide&Deep模型 在探索点击率&#xff08;CTR&#xff09;和转化率&#xff08;CVR&#xff09;预估的领域中&#xff0c;我们始终追求的是一种既能捕获数据中的线性关系&#xff0c;又能发现复杂模式的模型。因子分解机&#xff08;Factorization Machines, …

华为大咖说 | 从《庖丁解牛》谈项目经理的三重境界

本文作者&#xff1a; 李庆&#xff08;华为项目管理能力中心高级项目管理专家&#xff09; 全文约1945字&#xff0c;阅读约需6分钟&#xff0c;请仔细看看哦~ 近日我重读庄子的《庖丁解牛》&#xff0c;感悟良多&#xff0c;有了更深的理解。以前读到此故事时&#xff0c;只…

微服务SpringCloud,SpringAliBaBa(2)

微服务02 1.网关路由 网络的关口&#xff0c;负责请求的路由、转发、身份校验。 有了网关之后&#xff0c;微服务的地址不用在暴露了&#xff0c;就暴露个网关地址。 快速入门 routes代表一套路由&#xff0c;pridicates是规则&#xff0c;对请求做出判断&#xff0c;看是哪…

[C++深入] --- malloc/free和new/delete

1 new运算符的拓展 1.1 自由存储区与堆的概念 在C++中,内存区分为5个区,分别是堆、栈、自由存储区、全局/静态存储区、常量存储区。 自由存储区是C++基于new操作符的一个抽象概念,凡是通过new操作符进行内存申请,该内存即为自由存储区。 new操作符从自由存储区(free st…

[大师C语言(第三十六篇)]C语言信号处理:深入解析与实战

引言 在计算机科学中&#xff0c;信号是一种软件中断&#xff0c;它允许进程之间或进程与内核之间进行通信。信号处理是操作系统中的一个重要概念&#xff0c;它允许程序对各种事件做出响应&#xff0c;例如用户中断、硬件异常和系统调用。C语言作为一门接近硬件的编程语言&am…

今日头条豆包大语言模型api接入python SDK,安装官方库报错,解决方法

豆包python大语言模型库安装指令&#xff1a; pip install volcengine-python-sdk 报错&#xff1a; note: This error originates from a subprocess, and is likely not a problem with pip.ERROR: Failed building wheel for volcengine-python-sdkRunning setup.py clea…

java8 将对象list中的某一个属性取出组成一个list

实体类 public class Sp {String spdm;String spmc;public Sp() {}public Sp(String spdm, String spmc) {this.spdm spdm;this.spmc spmc;}public String getSpdm() {return spdm;}public void setSpdm(String spdm) {this.spdm spdm;}public String getSpmc() {return sp…

数据库讲解---(数据库设计)

目录 一.数据库设计概述 1.1数据库设计的内容 1.1.1数据库的结构设计 1.1.2数据库的行为设计 1.2数据库设计方法 1.2.1直观设计法 1.2.2规范设计法 1.2.3计算机辅助设计法 1.2.4自动化设计法 1.3数据库设计的基本步骤 1.3.1需求分析 1.3.2概念结构设计 1.3.3逻辑结…

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述

气象站的种类和应用范围可以根据不同的分类标准进行详细的划分和描述。以下是从不同角度对气象站的种类和应用范围的介绍&#xff1a; 一、气象站的种类 根据用途和安装环境分类&#xff1a; 农业气象站&#xff1a;专为农业生产服务&#xff0c;监测土壤温度、湿度等参数&am…

替代LTC3855双通道多相带差分遥测DC-DC同步控制器

特性:双通道、180 定相控制器降低了所需的输入电容和电源感应噪声高效率&#xff1a;达 95%RSENSE 或 DCR 电流检测可编程 DCR 温度补偿0.75%、0.6V 输出电压准确度可锁相固定频率&#xff1a;250kHz 至 770kHz真正的远端采样差分放大器双路 N 沟道 MOSFET 同步驱动宽 VIN 范围…

huggingface accelerate 多机多卡DDP分布式训练案例

参考: https://www.bilibili.com/video/BV1jS411K72E/?spm_id_from=333.788&vd_source=34d74181abefaf9d8141bbf0d485cde7 https://github.com/chunhuizhang/pytorch_distribute_tutorials/blob/main/tutorials/deepspeed_accelerate/accelerate_basics_scripts.py htt…

x264 码率控制 AQmode 算法原理:i_inv_qscale_factor 变量

介绍 关于 AQmode 整体算法的介绍可以参考:x264 码率控制中自适应量化模式 AQ mode分析 。i_inv_qscale_factor是一个uint16_t类型的指针变量,在 frame.h 头文件x264_frame_t结构体中声明,主要用来针对每个宏块 MB 进行相关值存储。在 frame.c 文件中*frame_new函数中在 fen…

oracle 12c/19c OEM 无法访问怎么办?

作者介绍&#xff1a;老苏&#xff0c;10余年DBA工作运维经验&#xff0c;擅长Oracle、MySQL、PG数据库运维&#xff08;如安装迁移&#xff0c;性能优化、故障应急处理等&#xff09; 公众号&#xff1a;老苏畅谈运维 欢迎关注本人公众号&#xff0c;更多精彩与您分享。到了12…

网页中一些基本元素

1、页尾自适应 <!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style&g…