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

贪心算法之重叠区间问题

以下四个题都是重叠区间问题

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

  • 为了让气球尽可能重叠,先按照气球起始位置由大到小排序
  • tips:sort默认就可以实现以上排序,不需要写cmp
  • 重点:当下一个气球的左边界不小于上一个气球的右边界时(即有重叠的情况),为了判断再下一个气球能否和这两个有重叠,就需要将右边界 point[i][1] 置成小的那个右边界 min(point[i-1][1] , point[i][1])
class Solution {
public:int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(), points.end());int ret = 1;for (int i = 1; i < points.size(); i++) {if (points[i][0] > points[i - 1][1]) ret++;else points[i][1] = min(points[i - 1][1], points[i][1]);}return ret;}
};

435. 无重叠区间

与上一个题极其相似,首先按照左边界排序,当重叠的时候,舍弃重叠的右边长的那个区间(即将右边界定为小的那个),ret++记录重叠区间个数。

class Solution {
public:int eraseOverlapIntervals(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end());int ret = 0;for (int i = 1; i < intervals.size(); i++) {if (intervals[i][0] < intervals[i - 1][1]) {ret++;intervals[i][1] = min(intervals[i][1], intervals[i - 1][1]);}}return ret;}
};

763. 划分字母区间

  1. 统计每一个字符最后出现的位置
  2. 从头遍历字符,并更新字符的最远出现下标,如果找到字符最远出现位置下标和当前下标相等了,则找到了分割点
class Solution {
public:vector<int> partitionLabels(string s) {int hash[27] = {0};for (int i = 0; i < s.size(); i++) {hash[s[i] - 'a'] = i;}vector<int> ret;int left = 0, right = 0;for (int i = 0; i < s.size(); i++) {right = max(hash[s[i] - 'a'], right);if (right == i) {ret.push_back(right - left + 1);left = i + 1;}}return ret;}
};

56. 合并区间

和上面的435差不多,先按照左边界排序好,将第一组数据添加到ret中,之后如果满足后一个的左边界小于等于这个的右边界时候,更新ret中的这个(ret.back()[1]更新成大的右边界),不满足就把下一个添加进来,for循环是从i=1开始

class Solution {
public:vector<vector<int>> merge(vector<vector<int>>& intervals) {sort(intervals.begin(), intervals.end());if (intervals.size() == 1)return intervals;vector<vector<int>> ret;ret.push_back(intervals[0]);for (int i = 1; i < intervals.size(); i++) {if (intervals[i][0] <= ret.back()[1]) {ret.back()[1] = max(ret.back()[1], intervals[i][1]);} elseret.push_back(intervals[i]);}return ret;}
};

相关文章:

贪心算法之重叠区间问题

以下四个题都是重叠区间问题 452. 用最少数量的箭引爆气球 为了让气球尽可能重叠&#xff0c;先按照气球起始位置由大到小排序tips&#xff1a;sort默认就可以实现以上排序&#xff0c;不需要写cmp重点&#xff1a;当下一个气球的左边界不小于上一个气球的右边界时(即有重叠的…...

Python爬虫入门教程(非常详细)适合零基础小白

一、什么是爬虫&#xff1f; 1.简单介绍爬虫 爬虫的全称为网络爬虫&#xff0c;简称爬虫&#xff0c;别名有网络机器人&#xff0c;网络蜘蛛等等。 网络爬虫是一种自动获取网页内容的程序&#xff0c;为搜索引擎提供了重要的数据支撑。搜索引擎通过网络爬虫技术&#xff0c;将…...

ArcGIS Pro基础:软件的常用设置:中文语言、自动保存、默认底图

上图所示&#xff0c;在【选项】&#xff08;Options&#xff09;里找到【语言】设置&#xff0c;将语言切换为中文选项&#xff0c;记得在安装软件时&#xff0c;需要提前安装好ArcGIS语言包。 上图所示&#xff0c;在【选项】里找到【编辑】设置&#xff0c;可以更改软件默认…...

依赖注入+中央事件总线:Vue 3组件通信新玩法

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;Vue篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来Vue篇专栏内容:Vue-依赖注入-中央事件总线 目录 中央事件总线使用 依赖注入使用 总结 中央事件总线 依赖注入…...

EasyCVR视频汇聚平台构建远程安防监控:5大亮点解析,助力安防无死角

随着科技的飞速发展&#xff0c;远程安防监控系统已经成为现代社会中不可或缺的一部分&#xff0c;无论是在小区、公共场所还是工业领域&#xff0c;安防监控都发挥着至关重要的作用。而EasyCVR作为一款功能强大的视频监控综合管理平台&#xff0c;其在构建远程安防监控系统方面…...

fastadmin安装插件报500的错误

项目场景&#xff1a; 项目新建后&#xff0c;想在本地项目中安装相关的插件&#xff0c;但是在插件管理页面点击安装的时候一直报500的错误。 问题描述 我们将项目中的调试打开&#xff0c;在application/config.php里修改 app_debug&#xff0c;将false改为true&#xff0c…...

速盾:为什么需要服务器和cdn?

在互联网时代&#xff0c;服务器和CDN&#xff08;内容分发网络&#xff09;起着非常重要的作用。它们是实现高效、稳定和可靠网络服务的关键组成部分。下面我将详细阐述为什么需要服务器和CDN。 首先&#xff0c;服务器是互联网上存储、处理和传输数据的中心枢纽。当我们在浏…...

十四、模拟实现 list 类

Ⅰ . list 基本框架的实现 01 结点的建立 为了实现链表&#xff0c;我们首先要做的应该是建立结点 为了和真正的 list 进行区分&#xff0c;我们仍然在自己的命名空间内实现 代码实现&#xff1a; namespace yxt {// 建立结点template<class T>struct ListNode{T _d…...

JavaScript简介之引入方式

JavaScript 引入方式 提问&#xff1a;CSS的引入方式&#xff1f;在学习 JavaScript 语法之前&#xff0c;我们首先要知道在哪里写 JavaScript 才行。想要在 HTML 中引入 JavaScript&#xff0c;一般有 3 种方式。 外部 JavaScript 内部 JavaScript 元素事件 JavaScript&#…...

同一台电脑上安装不同版本的nodejs(搭配VSCode)

今天拉取了一个前后端分离的项目&#xff0c;运行前端的时候&#xff0c;出现node版本不匹配的情况。 本文章将从安装node.js开始到VSCode使用进行讲解 1、去官网下载node版本 以16版本为例&#xff0c;需要哪个版本&#xff0c;就在网址上把版本号替换即可 https://nodejs.o…...

python小游戏之摇骰子猜大小

最近学习Python的随机数&#xff0c;逻辑判断&#xff0c;循环的用法&#xff0c;就想找一些练习题&#xff0c;比如小游戏猜大小&#xff0c;程序思路如下&#xff1a; 附上源代码如下&#xff1a; 摇骰子的函数&#xff0c;这个函数其实并不需要传任何参数&#xff0c;调用后…...

C++入门——12继承

1.继承 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承呈现了面向对象程序设计的层次结构&#xff0c;体现了由简…...

Python做统计图之美

Python数据分析可视化 案例效果图 import pandas as pd import matplotlib.pyplot as plt import matplotlib# 数据 data {"房型": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],"住宅类型": ["普通宅", "普通宅", "普通宅", &q…...

激光雷达点云投影到图像平面

将激光雷达点云投影到图像平面涉及几何变换和相机模型的应用。以下是该过程的基本原理&#xff1a; 1. 坐标系转换 激光雷达生成的点云通常位于激光雷达的坐标系中&#xff0c;而图像则在相机坐标系中。为了将点云投影到图像上&#xff0c;首先需要将点云从激光雷达坐标系转换…...

[python]将anaconda默认创建环境python版本设置为32位的

首先看看gpt怎么回答的 装了Anaconda。如果尚未安装&#xff0c;可以从Anaconda官网下载适合你的操作系统的安装程序&#xff0c;并按照安装向导进行安装。 二、创建32位Python环境 在Anaconda中&#xff0c;你可以通过修改环境变量来尝试切换到32位模式&#xff08;尽管这并…...

Jmeter+Influxdb+Grafana平台监控性能测试过程(三种方式)

一、Jmeter自带插件监控 下载地址&#xff1a;Install :: JMeter-Plugins.org 安装&#xff1a;下载后文件为jmeter-plugins-manager-1.3.jar&#xff0c;将其放入jmeter安装目录下的lib/ext目录&#xff0c;然后重启jmeter&#xff0c;即可。 启动Jmeter&#xff0c;测试计…...

[创业之路-135] :ERP、PDM、EDM、Git各种的用途和区别,硬件型初创公司需要哪些管理工具?

目录 前言&#xff1a; 一、ERP&#xff08;企业资源计划&#xff09; 二、PDM&#xff08;产品数据管理系统&#xff09; 三、EDM&#xff08;文档管理系统&#xff0c;有时也指电子邮件营销&#xff09; 四、Git 总结 五、硬件研发、生产型企业需要哪些管理工具&#…...

通过剪枝与知识蒸馏优化大型语言模型:NVIDIA在Llama 3.1模型上的实践与创新

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

DOM型xss靶场实验

xss是什么&#xff1f; XSS是一种经常出现在web应用中的计算机安全漏洞&#xff0c;它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。攻击者利用XSS漏洞旁路掉访问控制--例如同源策略(same origin policy)。这种类型的漏洞由…...

华为---端口隔离简介和示例配置

目录 1. 端口隔离概念 2. 端口隔离作用 3. 端口隔离优点 4. 端口隔离缺点 5. 端口隔离的方法和应用场景 6. 端口隔离配置 6.1 端口隔离相关配置命令 6.2 端口隔离配置思路 7. 示例配置 7.1 示例场景 7.2 网络拓扑图 7.3 基本配置 7.4端口隔离配置与验证 7.4.1 双…...

挑选专业语音工具不会选?这5个实用标准帮到你

日常工作生活中&#xff0c;不少人会遇到会议纪要整理、课堂录音梳理、嘉宾访谈整理等场景&#xff0c;这类场景往往需要耗费大量时间抠语音内容&#xff0c;挑选语音转写工具时&#xff0c;也常面临准确率差、速度慢等问题&#xff0c;结合多款主流AI工具实测&#xff0c;整理…...

保姆级教程:用Unity+OpenCVSharp插件实现摄像头实时轮廓检测与交互(附完整C#代码)

Unity与OpenCVSharp实战&#xff1a;从摄像头捕捉到交互式轮廓检测全流程解析 在游戏开发与计算机视觉的交叉领域&#xff0c;实时图像处理正成为增强玩家沉浸感的新 frontier。想象一下&#xff1a;玩家只需在摄像头前挥动手势&#xff0c;游戏中的角色就能同步做出反应&#…...

主从结合,安全互联:Anybus工业通信解决方案全栈升级

HMS亮相2026 PROFINET技术路演杭州站&#xff0c;展出全新Anybus SoM及全栈PROFINET方案&#xff0c;助力设备商应对CRA与机械法规双重合规挑战。 5月14日&#xff0c;由PI China主办的2026 PROFINET技术路演&#xff08;杭州站&#xff09;在西玥酒店圆满举行。HMS华东区OEM销…...

基于雪崩晶体管设计2ns快速边沿脉冲发生器:原理、实现与调试

1. 项目概述与核心价值在射频、高速数字电路测试&#xff0c;甚至是核物理、激光雷达的前沿实验中&#xff0c;我们常常会遇到一个令人头疼的问题&#xff1a;市面上能买到的标准脉冲信号源&#xff0c;其输出脉冲的上升时间&#xff08;Rise Time&#xff09;往往在几十纳秒甚…...

智慧树视频自动播放插件:3分钟搞定所有课程学习的终极指南

智慧树视频自动播放插件&#xff1a;3分钟搞定所有课程学习的终极指南 【免费下载链接】zhihuishu 智慧树刷课插件&#xff0c;自动播放下一集、1.5倍速度、无声 项目地址: https://gitcode.com/gh_mirrors/zh/zhihuishu 还在为智慧树平台繁琐的手动操作而烦恼吗&#x…...

从USB转TTL到RS485:手把手教你用一颗CH342F芯片玩转三种串口通信

CH342F芯片实战指南&#xff1a;一芯三用的串口通信解决方案 在物联网和工业控制领域&#xff0c;串口通信依然是设备间可靠数据传输的基石。面对多样化的接口标准&#xff08;TTL、RS232、RS485&#xff09;&#xff0c;工程师常常需要准备多种转换模块。而CH342F芯片以其独特…...

嵌入式操作系统选型实战指南:从硬件约束到商业考量的五维决策框架

1. 项目概述&#xff1a;一个困扰无数工程师的经典难题干了十几年嵌入式&#xff0c;从8位单片机玩到多核ARM&#xff0c;从裸机撸到各种RTOS&#xff0c;再到Linux、Android&#xff0c;最常被问到也最头疼的问题之一就是&#xff1a;“老大&#xff0c;新项目用哪个操作系统好…...

嵌入式网络开发避坑:LwIP软件定时器溢出处理与链表排序的实战细节

嵌入式网络开发避坑&#xff1a;LwIP软件定时器溢出处理与链表排序的实战细节 在嵌入式网络开发中&#xff0c;LwIP协议栈因其轻量级和高度可裁剪性成为众多开发者的首选。然而&#xff0c;在实际应用中&#xff0c;软件定时器的溢出处理和链表排序逻辑往往是引发隐蔽问题的重灾…...

Anaconda安装后必做的两件事:快速配置清华镜像源和验证环境(附常用conda命令清单)

Anaconda安装后的高效配置指南&#xff1a;镜像加速与环境验证全攻略 当你第一次打开Anaconda Prompt时&#xff0c;那种面对全新工具既兴奋又忐忑的心情我深有体会。作为Python数据科学领域的瑞士军刀&#xff0c;Anaconda的强大功能背后隐藏着许多新手容易忽略的配置细节。本…...

Chrome 90+ 跨域请求突然失败?手把手教你排查 strict-origin-when-cross-origin 这个‘新’策略

Chrome 90 跨域请求突然失败&#xff1f;从原理到实战的完整解决方案 最近不少开发者反馈&#xff0c;Chrome浏览器升级到90版本后&#xff0c;原本正常运行的前端项目突然出现跨域请求失败的问题。控制台只显示一个模糊的strict-origin-when-cross-origin错误&#xff0c;让人…...