剑指 Offer II 074. 合并区间

Posted 不吐西瓜籽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer II 074. 合并区间相关的知识,希望对你有一定的参考价值。

算法记录

LeetCode 题目:

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



说明

一、题目

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

二、分析

  • 没有啥算法上面的难点,关键是考验编码能力,将包含的情况分析完之后就可以了。
class Solution {
    public int[][] merge(int[][] intervals) {
        Arrays.sort(intervals, new Comparator<int[]>() {
            @Override
            public int compare(int[] o1, int[] o2) {
                return o1[0] - o2[0];
            }
        });
        List<int[]> res = new ArrayList();
        for(int i = 0; i < intervals.length; i++) {
            int t = intervals[i][0], k = intervals[i][1], j = i + 1;
            while(j < intervals.length && k >= intervals[j][0]) {
                k = Math.max(k, intervals[j][1]);
                j++;
            }
            i = j - 1;
            res.add(new int[]{t, k});
        }
        int[][] ans = new int[res.size()][];
        for(int i = 0; i < ans.length; i++) ans[i] = res.get(i);
        return ans;
    }
}

总结

注意列表和数组的转换。

以上是关于剑指 Offer II 074. 合并区间的主要内容,如果未能解决你的问题,请参考以下文章

剑指 Offer 53 - II. 0~n-1中缺失的数字

剑指 Offer II 078. 合并排序链表

LeetCode810. 黑板异或游戏/455. 分发饼干/剑指Offer 53 - I. 在排序数组中查找数字 I/53 - II. 0~n-1中缺失的数字/54. 二叉搜索树的第k大节点(代码片段

剑指 Offer II 116省份数量

剑指 Offer II 116省份数量

LeetCode Algorithm 剑指 Offer 57 - II. 和为s的连续正数序列