合并区间 - LeetCode 热题 14

大家好!我是曾续缘💫

今天是《LeetCode 热题 100》系列

发车第 14 天

普通数组第 2 题

❤️点赞 👍 收藏 ⭐再看,养成习惯
合并区间

以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间

示例 1:

复制代码
输入:intervals = [[1,3],[2,6],[8,10],[15,18]]
输出:[[1,6],[8,10],[15,18]]
解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

示例 2:

复制代码
输入:intervals = [[1,4],[4,5]]
输出:[[1,5]]
解释:区间 [1,4] 和 [4,5] 可被视为重叠区间。

提示:

  • 1 <= intervals.length <= 104
  • intervals[i].length == 2
  • 0 <= starti <= endi <= 104

难度:💖💖

解题方法

我们将列表中的区间按照左端点升序排序,这样可以从左到右遍历添加区间, 这样保证了我们答案的区间也是按照左端点升序排序的,

  • 假设我们遍历到位置i,使用l,r记录当前遍历到的区间的左右端点,
  • 取出我们答案中最靠右的区间, 因为答案中的区间已经是不重叠的了,当前区间只有可能和最靠右的区间重叠。
  • 判断当前区间是否和答案中最靠右的区间有交集,
  • 如果无交集, 说明不用合并, 将当前区间添加到答案中.
  • 如果有交集, 由于左端点升序排序,答案区间的左端点肯定小于当前区间的左端点,新区间的左端点就是答案区间的左端点,
  • 如果答案区间不包含当前区间, 合并区间就相当于延长答案区间的右端点.
  • 如果答案区间包含当前区间,新区间的右端点就是答案的右端点,不用变。

Code

java 复制代码
class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, new Comparator<int[]>(){
            public int compare(int[] a1, int[] a2){
                return a1[0] - a2[0];
            }
        });
        List<int[]> ans = new ArrayList<int[]>();
        for(int i = 0; i < intervals.length; i++){
            int l = intervals[i][0], r = intervals[i][1];
            if(ans.size() == 0 || ans.get(ans.size() - 1)[1] < l){
                ans.add(new int[]{l, r});
            }else{
                ans.get(ans.size() - 1)[1] = Math.max(ans.get(ans.size() - 1)[1], r);
            }
        }
        return ans.toArray(new int[ans.size()][]);
    }
}
相关推荐
Tisfy12 分钟前
LeetCode 3498.字符串的反转度:一次遍历
leetcode·字符串·题解·遍历
a1879272183118 分钟前
【算法】树(二):队列与祖先——BFS 骨架三配件、短路透传与合流
算法·leetcode·二叉树··bfs·算法讲解·树遍历
syagain_zsx43 分钟前
算法基础篇 · 03 枚举(C++ 题解)
c++·算法·二进制·枚举
weixin_307779131 小时前
C++代码实现MATLAB中的ode23tb函数功能
开发语言·c++·算法·matlab
AI职业加油站1 小时前
数据要素价值释放年:大数据治理工程师,站上职业新风口
人工智能·学习·职场和发展·数据分析·职场发展
倍利福猎头公司官方账号1 小时前
2026具身智能赛道还火热吗?机器人人选该如何思考下半年的工作机会?
人工智能·面试·职场和发展·机器人·求职招聘
我是章汕呐2 小时前
地级市能源消耗量及消耗强度数据【2006-2023年】平衡面板
人工智能·经验分享·算法·回归
charliejohn2 小时前
计算机考研 408 数据结构 堆的插入与删除 堆排序
算法
老鱼说AI3 小时前
从点积到希尔伯特空间:向量内积的几何本质与大模型相似度度量
人工智能·深度学习·线性代数·算法·机器学习·数学建模
地平线开发者3 小时前
模型部署|如何解决算子约束
深度学习·算法·自动驾驶