当前位置: 首页 > news >正文

算法训练(leetcode)第二十六天 | 452. 用最少数量的箭引爆气球、435. 无重叠区间、763. 划分字母区间

刷题记录

  • 452. 用最少数量的箭引爆气球
    • 思路一
    • 思路二
  • 435. 无重叠区间
  • 763. 划分字母区间

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

leetcode题目地址

思路一

先按起始坐标从小到大排序。排序后找交集并将交集存入一个数组中,遍历气球数组从交集数组中找交集,找到与当前集合相交的集合后将该集合的范围更新为两集合的交集(即左右区间取最小),最后返回交集数组的长度。

时间复杂度: O ( n 2 ) O(n^2) O(n2)
空间复杂度: O ( n ) O(n) O(n)

// c++
class Solution {
public: static bool cmp(const vector<int> & a, const vector<int> & b){if(a[0] == b[0]) return a[1]>b[1];return a[0] < b[0];}int findMinArrowShots(vector<vector<int>>& points) {vector<vector<int>> arrows;sort(points.begin(), points.end(), cmp);for(int i=0; i<points.size(); i++){bool flag = true;for(int j=0; j<arrows.size(); j++){if(points[i][0]>=arrows[j][0] && points[i][0] <= arrows[j][1]){arrows[j][0] = min(arrows[j][0], points[i][0]);arrows[j][1] = min(arrows[j][1], points[i][1]);flag = false;break;}}if(flag){arrows.emplace_back(points[i]);}}return arrows.size();}
};

思路二

和思路一本质上是一样的,只是不再借助额外空间,也不再需要双层循环。排序后只查看当前气球的起始坐标小于上一个气球的结束坐标,是则说明有重叠,则缩小当前节点的结束坐标为交集的结束位置,反之没有重叠则箭数量+1。

时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
空间复杂度: O ( 1 ) O(1) O(1)

class Solution {
public:static bool cmp(const vector<int> & a, const vector<int> & b){if(a[0] == b[0]) return a[1]>b[1];return a[0] < b[0];}int findMinArrowShots(vector<vector<int>>& points) {if(points.size()==0) return 0;sort(points.begin(), points.end());int result = 1;for(int i=1; i<points.size(); i++){if(points[i][0] > points[i-1][1]){result++;}else{points[i][1] = min(points[i-1][1], points[i][1]);}}return result;}
};

435. 无重叠区间

leetcode题目地址

本题可以说是和上一题换汤不换药,只不过上一题是统计不重叠的区间个数,本题是统计重叠区间。尽可能少的移除区间来保持剩余区间互不重叠,那每次出现重叠移除区间最大的那个即可。

时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn)
空间复杂度: O ( 1 ) O(1) O(1)

// c++
class Solution {
public:static bool cmp(const vector<int>&a, const vector<int>&b){if(a[0] == b[0]) return a[1]>b[1];return a[0]<b[0];}int eraseOverlapIntervals(vector<vector<int>>& intervals) {int result = 0;sort(intervals.begin(), intervals.end(), cmp);for(int i=1; i<intervals.size(); i++){if(intervals[i][0] < intervals[i-1][1]){// 把最大的区间移除intervals[i][1] = min(intervals[i-1][1], intervals[i][1]);result++;}}return result;}
};

763. 划分字母区间

leetcode题目地址

记录每个字符出现的最远位置,子串截取到子串中出现的字符的最远位置。

时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)

// c++
class Solution {
public:vector<int> partitionLabels(string s) {cin.tie(nullptr)->sync_with_stdio(false);int hash[26] = {0};for(int i=0; i<s.size(); i++){hash[s[i]-'a'] = i;}int left = 0;int right = 0;vector<int> result;for(int i=0; i<s.size(); i++){right = max(right, hash[s[i]-'a']);if(i==right){result.emplace_back(right-left+1);left = i+1;}}return result;}
};

相关文章:

算法训练(leetcode)第二十六天 | 452. 用最少数量的箭引爆气球、435. 无重叠区间、763. 划分字母区间

刷题记录 452. 用最少数量的箭引爆气球思路一思路二 435. 无重叠区间763. 划分字母区间 452. 用最少数量的箭引爆气球 leetcode题目地址 思路一 先按起始坐标从小到大排序。排序后找交集并将交集存入一个数组中&#xff0c;遍历气球数组从交集数组中找交集&#xff0c;找到与…...

Ubuntu 下 Docker安装 2024

Ubuntu 下 Docker安装 2024 安装1.卸载老版本2.更新apt包索引3.安装必要工具包4.添加Docker GPG秘钥5.配置仓库源6.安装Docker Engine7.启动docker 国内镜像源下架的解决办法1.修改文件 /etc/docker/daemon.json2.换源3.查看是否换源成功4.重启 安装 1.卸载老版本 sudo apt-ge…...

发送者的可靠性

这篇文章是了解MQ消息的可靠性&#xff0c;即&#xff1a;消息应该至少被消费者处理1次 那么问题来了&#xff1a; 我们该如何确保MQ消息的可靠性&#xff1f;如果真的发送失败&#xff0c;有没有其它的兜底方案&#xff1f; 首先&#xff0c;我们一起分析一下消息丢失的可能…...

Profibus_DP转ModbusTCP网关模块连马保与上位机通讯

Profibus转ModbusTCP网关模块&#xff08;XD-ETHPB20&#xff09;广泛应用于工业自动化领域。例如&#xff0c;可以将Profibus网络中的传感器数据转换为ModbusTCP协议&#xff0c;实现数据的实时监控和远程控制。本文介绍了如何利用Profibus转ModbusTCP网关&#xff08;XD-ETHP…...

移动应用:商城购物类,是最常见的,想出彩或许就差灵犀一指

在移动应用中&#xff0c;商城购物类的非常常见&#xff0c;模式也非常成熟&#xff0c;想要设计的出彩也是有难度的&#xff0c;这次分享一些不同的。...

linux 查看历史命令列表来访问之前的内容的命令是:history

在Linux中&#xff0c;要查看历史命令列表以访问之前的内容&#xff0c;你可以使用history命令。这个命令会显示你当前shell会话&#xff08;或者&#xff0c;如果你指定了参数&#xff0c;可能是所有会话&#xff09;中执行过的命令列表。 基本用法 简单地输入history并按下…...

NAS免费用,鲁大师 AiNAS正式发布,「专业版」年卡仅需264元

7月10日&#xff0c;鲁大师召开新品发布会&#xff0c;正式发布旗下以“提供本地Ai部署和使用能力以及在线NAS功能”并行的复合软件产品&#xff1a;鲁大师 AiNAS。 全新的鲁大师 AiNAS将持续满足现如今大众对于数字化生活的全新需求&#xff0c;将“云存储”的便捷与NAS的大容…...

spring监听事件

1、spring-监听事件基本原理 Spring的事件监听机制和发布订阅机制是很相似的&#xff1a;发布了一个事件后&#xff0c;监听该类型事件的所有监听器会触发相应的处理逻辑 2、Spring 监听事件相关规范 在Spring中&#xff0c;事件监听机制主要涉及到了一下几个关键的规范&#x…...

微软发布E2 TTS: 一种简单但效果优秀的文本转语音技术

本文介绍了一种名为“Embarrassingly Easy Text-to-Speech&#xff08;E2 TTS&#xff09;”的文本转语音系统。 该系统通过将输入文本转换为填充标记字符序列&#xff0c;并基于音频填充值任务训练流匹配基mel频谱生成器&#xff0c;实现了人类水平的自然度和最先进的说话人相…...

python爬虫加入进度条

安装tqdm和requests库 pip install tqdm -i https://pypi.tuna.tsinghua.edu.cn/simplepip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple带进度条下载 import time # 引入time模块&#xff0c;用于处理时间相关的功能 from tqdm import * # 从tqdm包中…...

力扣844.比较含退格的字符串

力扣844.比较含退格的字符串 栈模拟 class Solution {public:bool backspaceCompare(string s, string t) {int n s.size(),m t.size();stack<char> s1,s2;for(int i0;i<n;i){s1.push(s[i]);if(s[i] #){if(s1.size() 1) s1.pop();else s1.pop(),s1.pop();}}for(i…...

用户特征和embedding层做Concatenation

要将用户特征与嵌入层进行连接&#xff0c;可以使用深度学习框架&#xff08;如TensorFlow或PyTorch&#xff09;中的基本操作。以下是使用PyTorch的示例代码&#xff0c;展示了如何将用户特征与嵌入层连接起来。 示例代码&#xff08;使用PyTorch&#xff09; 安装 PyTorch 如…...

Ubuntu20.04下修改samba用户密码

Ubuntu20.04下修改samba用户密码 在Ubuntu系统中&#xff0c;修改samba密码通常涉及到两个方面&#xff1a;更改samba用户的密码和重置samba服务的密码数据库。以下是如何进行操作的步骤&#xff1a; 1、更改samba用户密码&#xff1a; 打开终端&#xff0c;使用以下命令更改…...

PHP老照片修复文字识别图像去雾一键抠图微信小程序源码

&#x1f50d;解锁复古魅力&#xff0c;微信小程序黑科技大揭秘&#xff01;老照片修复&更多神奇功能等你来试&#xff01; &#x1f4f8; 【老照片修复&#xff0c;时光倒流的美颜术】 你是否珍藏着一堆泛黄的老照片&#xff0c;却因岁月侵蚀而模糊不清&#xff1f;现在…...

识别色带详解解释

这段代码主要用于检测图像中的绿色区域&#xff0c;并在检测到特定数量的绿色像素时采取相应的动作。下面是每行代码的详细解释&#xff1a; if (divergerColor "green") {目的: 检查当前 divergerColor 是否为 “green”。如果是&#xff0c;则进入代码块进行绿色…...

如何用 Python 绕过 cloudflare(5秒盾) 抓取数据:也不是很难嘛!

大家好!我是爱摸鱼的小鸿,关注我,收看每期的编程干货。 逆向是爬虫工程师进阶必备技能,当我们遇到一个问题时可能会有多种解决途径,而如何做出最高效的抉择又需要经验的积累。本期文章将以实战的方式,带你全面了解 cloudflare(5秒盾) 以及如何绕过使用 cloudflare 服务…...

掌握Conda配置术:conda config命令的深度指南

掌握Conda配置术&#xff1a;conda config命令的深度指南 引言 Conda是一个功能强大的包管理器和环境管理器&#xff0c;广泛用于Python和其他科学计算语言的依赖管理。conda config命令是Conda套件中用于配置和自定义Conda行为的关键工具。通过这个命令&#xff0c;用户可以…...

MySQL:left join 后用 on 还是 where?

在MySQL中&#xff0c;LEFT JOIN用于返回左表&#xff08;即LEFT JOIN关键字左边的表&#xff09;的所有记录&#xff0c;即使在右表中没有匹配的记录。对于那些右表中没有匹配的记录&#xff0c;结果集中右表的部分会被填充为NULL。关于ON和WHERE子句的使用&#xff0c;它们在…...

openfoam生成的非均匀固体Solid数据分析、VTK数据格式分析、以及paraview官方用户指导文档和使用方法

一、openfoam生成的非均匀固体Solid数据分析 二、VTK数据格式分析 三、paraview官方用户指导文档和使用方法 官网文档链接&#xff1a;在paraview软件中&#xff0c;点击工具栏中的help->paraview guide 即可直接跳转到浏览器打开官网指导页面。 官网链接如下&#xff1a;…...

JVM:类的生命周期

文章目录 一、介绍二、加载阶段三、连接阶段1、验证阶段2、准备阶段3、解析阶段 四、初始化阶段 一、介绍 类的生命周期描述了一个类加载、连接&#xff08;验证、准备和解析&#xff09;、初始化、使用、卸载的整个过程。 二、加载阶段 加载&#xff08;Loading&#xff09…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志&#xff0c;定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

用递归算法解锁「子集」问题 —— LeetCode 78题解析

文章目录 一、题目介绍二、递归思路详解&#xff1a;从决策树开始理解三、解法一&#xff1a;二叉决策树 DFS四、解法二&#xff1a;组合式回溯写法&#xff08;推荐&#xff09;五、解法对比 递归算法是编程中一种非常强大且常见的思想&#xff0c;它能够优雅地解决很多复杂的…...

深度解析:etcd 在 Milvus 向量数据库中的关键作用

目录 &#x1f680; 深度解析&#xff1a;etcd 在 Milvus 向量数据库中的关键作用 &#x1f4a1; 什么是 etcd&#xff1f; &#x1f9e0; Milvus 架构简介 &#x1f4e6; etcd 在 Milvus 中的核心作用 &#x1f527; 实际工作流程示意 ⚠️ 如果 etcd 出现问题会怎样&am…...