【算法与数据结构】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个区间挨着,移除区间数+1
				result++;
				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个区间挨着,移除区间数+1
				result++;
				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

相关推荐

  1. LeetCode-435重叠区间(贪心)

    2024-01-02 09:58:01       36 阅读
  2. 435. 重叠区间

    2024-01-02 09:58:01       22 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-02 09:58:01       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-02 09:58:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-02 09:58:01       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-02 09:58:01       20 阅读

热门阅读

  1. 离散优化模型的松弛模型

    2024-01-02 09:58:01       28 阅读
  2. STL——map/multimap容器

    2024-01-02 09:58:01       43 阅读
  3. 如何配置TensorRT版的Katago

    2024-01-02 09:58:01       44 阅读
  4. 世岩清上:跨年倒计时如何通过全息投影呈现

    2024-01-02 09:58:01       34 阅读
  5. 《Linux详解:深入探讨计算机基础》

    2024-01-02 09:58:01       34 阅读
  6. Spring Boot实战:深入理解@Service与@Mapper注解

    2024-01-02 09:58:01       37 阅读
  7. ARM AArch64的虚拟化(virtualization)详解(下)

    2024-01-02 09:58:01       41 阅读
  8. http基本格式

    2024-01-02 09:58:01       40 阅读
  9. 位运算trick

    2024-01-02 09:58:01       43 阅读
  10. ChatGPT的基本原理?

    2024-01-02 09:58:01       40 阅读