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

【算法与数据结构】435、LeetCode无重叠区间

文章目录

  • 一、题目
  • 二、解法
  • 三、完整代码

所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。

一、题目

在这里插入图片描述

二、解法

  思路分析:思路和【算法与数据结构】452、LeetCode用最少数量的箭引爆气球类似,也是排序+找重叠区间。因为题目要求去掉重叠区间,所以要找挨着的重叠区间数量。因此在if语句中稍作修改。
  程序如下

class Solution {
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];
}
public: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]){ // 如果第i个区间和第i-1个区间挨着,移除区间数+1result++;intervals[i][1] = min(intervals[i - 1][1], intervals[i][1]); // 更新重叠区间最小右边界}}return result;}
};

复杂度分析:

  • 时间复杂度: O ( n l o g n ) O(nlogn) O(nlogn),一个快速排序。
  • 空间复杂度: O ( 1 ) O(1) O(1),有一个快排,最差情况(倒序)时,需要n次递归调用。因此确实需要O(n)的栈空间
    可以看出代码并不复杂。

三、完整代码

# include <iostream>
# include <vector>
# include <algorithm>
using namespace std;class Solution {
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];
}
public: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]){ // 如果第i个区间和第i-1个区间挨着,移除区间数+1result++;intervals[i][1] = min(intervals[i - 1][1], intervals[i][1]); // 更新重叠区间最小右边界}}return result;}
};int main() {vector<vector<int>> intervals = { {1, 2}, {2, 3},{3, 4},{1, 3} };Solution s1;int result = s1.eraseOverlapIntervals(intervals);cout << "结果:" << result << endl;system("pause");return 0;
}

end

http://www.lryc.cn/news/269541.html

相关文章:

  • 【开题报告】基于SpringBoot的茶文化宣传网站设计与实现
  • 用通俗易懂的方式讲解大模型:基于 Langchain 和 ChatChat 部署本地知识库问答系统
  • YOLO训练results.csv文件可视化(原模型与改进模型对比可视化)
  • uni-appcss语法
  • java在线票务系统(选座)Myeclipse开发mysql数据库web结构java编程计算机网页项目
  • Python 简易图形界面库easygui 对话框大全(续)
  • 电容器50ZLH56MEFC6.3X11
  • vscode 支持c,c++编译调试方法
  • MyBatis的缓存!!!!
  • ToB还是ToC?工业级与消费级AR眼镜都能干什么?
  • 设计模式-Java版本
  • 数据库中如何修改和删除字段
  • 在 Golang 应用程序中管理多个数据库
  • 理解开源协议GPL、MIT、BSD、Apache License
  • Talk | 北京大学博士生汪海洋:通向3D感知大模型的前置方案
  • 【C语言数组传参】规则详解
  • 【Linux】Ubuntu22.04版本下实现gcc版本的快速切换
  • 使用Node Exporter采集主机数据
  • Django 文件上传(十二)
  • k8s的陈述式资源管理
  • electron-builder 打包exe后白屏
  • mvvm,vue双向数据绑定的原理
  • 【Java中序列化的原理是什么(解析)】
  • 冠赢互娱基于 OpenKrusieGame 实现游戏云原生架构升级
  • Mybatis 动态 SQL - trim, where, set
  • 大模型系列:OpenAI使用技巧_使用OpenAI进行K-means聚类
  • 共享单车之数据分析
  • Spring的Bean你了解吗
  • MongoDB聚合:$merge 阶段(1)
  • 2. 云原生实战之kubesphere搭建