贪心算法
757. 设置交集大小至少为2
难度困难93收藏分享切换为英文接收动态反馈
一个整数区间 [a, b]
( a < b
) 代表着从 a
到 b
的所有连续整数,包括 a
和 b
。
给你一组整数区间intervals
,请找到一个最小的集合 S,使得 S 里的元素与区间intervals
中的每一个整数区间都至少有2个元素相交。
输出这个最小集合S的大小。
示例 1:
1 |
|
示例 2:
1 |
|
注意:
intervals
的长度范围为[1, 3000]
。intervals[i]
长度为2
,分别代表左、右边界。intervals[i][j]
的值是[0, 10^8]
范围内的整数。
题解
这道题是典型贪心算法,和其他的排序贪心不同的是,在考虑区间的时候需要从每个区间的右边考虑
- 对原数据按照右边界大小开始排序
- 排序结束之后,查看两个边界是否相交
- 相交元素超过两个,则不需要添加新的元素
- 相交元素为1个,需要额外添加一个新的元素
- 没有相交元素,需要额外添加两个元素
- 输出总共元素个数
代码如下所示
1 |
|
- 时间复杂度:$ O(n) $
- 空间复杂度:$ O(l) $
757设置交集大小至少为2
http://example.com/2022/07/22/leetcode每日一题/757.设置交集大小至少为2/