`

Merge Intervals

阅读更多
Given a collection of intervals, merge all overlapping intervals.

For example,
Given [1,3],[2,6],[8,10],[15,18],
return [1,6],[8,10],[15,18].

题目中给定了一个interval集合,要求我们将集合中的interval合并,合并之后的interval是按照升序排列的。我们可以先将interval排序先按照interval的第一个元素,如果第一个元素相等就按照第二个元素。排序的时候我们定义一个比较器comparator。排序之后,从第二个interval开始,如果第二个interval的第一个元素等于或小于第一个interval的第二个元素,那么就将intervals[1].end = Math.max(intervals[2].end, intervals[1].end)。如果没有重叠,直接打入到结果集中。时间复杂度为O(nlogn)。代码如下:
/**
 * Definition for an interval.
 * public class Interval {
 *     int start;
 *     int end;
 *     Interval() { start = 0; end = 0; }
 *     Interval(int s, int e) { start = s; end = e; }
 * }
 */
public class Solution {
    public List<Interval> merge(List<Interval> intervals) {
        List<Interval> list = new ArrayList<Interval>();
        if(intervals == null || intervals.size() == 0) return list;
        Collections.sort(intervals, new Comparator<Interval>() {
            @Override
            public int compare(Interval i1, Interval i2) {
                if(i1.start == i2.start) 
                    return i1.end - i2.end;
                return i1.start - i2.start;
            }
        });
        list.add(intervals.get(0));
        for(int i = 0; i < intervals.size(); i++) {
            if(list.get(list.size() - 1).end >= intervals.get(i).start) {
                list.get(list.size() - 1).end = Math.max(list.get(list.size() - 1).end, intervals.get(i).end);
            } else {
                list.add(intervals.get(i));
            }
        }
        return list;
    }
}
分享到:
评论

相关推荐

    Coding Interview In Java

    11 Merge Intervals 43 12 Insert Interval 45 13 Two Sum 47 14 Two Sum II Input array is sorted 49 15 Two Sum III Data structure design 51 16 3Sum 53 17 4Sum 55 18 3Sum Closest 57 19 String to Integer ...

    LeetCodeTrain:这是来自LeetCode的已解决任务的存储库

    这是来自LeetCode的已解决任务的存储库使用Java语言解决任务 CoinChange.java - //leetcode....intervals/ ReverseLinkedList.java - //leetcode.com/problem

    cpp-算法精粹

    Merge Intervals Minimum Window Substring Multiply Strings Substring with Concatenation of All Words Pascal's Triangle Pascal's Triangle II Spiral Matrix Spiral Matrix II ZigZag Conversion Divide Two ...

    leetcode2sumc-LeetCode:练习商务面试

    leetcode 2 sum c LeetCode规划 LEETCODE PATTERNS 从LeetCode学演算法 Leetcode笔记 ...intervals (第一类) ex: [1,2], [2,3], [4,5], [5,7] &gt; [1,2,3], [4,5,7] 3) merge intervals (第二类) - M

    LeetCode最全代码

    ...The number of questions is increasing recently. Here is the classification of all `468` questions. ...I'll keep updating for full summary and better solutions....|-----|---------------- | --------------- |...

    javalruleetcode-LeetCode::lollipop:个人LeetCode习题解答仓库-多语言

    java lru leetcode :ice_cream: LeetCode Kindem 的个人 LeetCode 题解仓库,欢迎交流学习。 下面的目录中 $number 题号代表经典 LeetCode 题目,$number.$number ...Merge Intervals 64 Minimum Path Sum 73

    leetcode482-coding-test:编码测试

    MergeIntervals_56 [Java] Java LinkedList 用法和示例总结 MeetingRoomsII_253 [Java] PriorityQueue 类用法和示例总结 关于 KClosetPointsToOrigin_973 PriorityQueue(报告正确答案) FindAllAnagramsInAString_...

    lrucacheleetcode-LeetCodeSheet:记录自己Leetcode之旅

    Intervals 进阶题目: Leetcode 179. Largest Number Leetcode 75. Sort Colors Leetcode 215. Kth Largest Element Leetcode 4. Median of Two Sorted Arrays 注意:后两题是与快速排序非常相似的快速选择(Quick ...

    Note-Java:Java的有关算法和数据结构的说明。 该项目包含200多个单个Java程序

    │ │ ├── _056_MergeIntervals.java │ │ ├── _169_MajorityElement.java │ │ ├── _179_LargestNumber.java │ │ ├── _202_HappyNumber.java │ │ ├── _279_PerfectSquares.java │...

    gasstationleetcode-LeetCode:力码

    Intervals252Meeting Rooms253Meeting客房II352Data流从数据Stream53Maximum Subarray325Maximum大小子阵总和脱节IntervalsTreeMapCounter239Sliding窗口Maximum295Find中位数的距离和很少考289Game的提高321Create...

    leetcode2sumc-Fizz:嘶嘶声

    Intervals:还没有检查连接组件方法 065 068 069 071 131 回文分区:动态规划 180 188个买卖股票的最佳时机IV:不懂最快的方法 218 341 展平嵌套列表迭代器 371 两个整数的和 438 查找字符串中的所有字谜:哈希值 ...

    checkio-mission-merge-intervals-generator

    检查任务模板这是用户生成任务的基本CheckiO模板。 它具有固定的文件夹结构,因此请谨慎使用文件和命名约定。任务示例一些例子几个用户创建了自己的任务,您可以在CheckiO上查看(并解决!)。 就像的。...

    leetcode分类-leetCode:leetcode

    leetcode 分类 ReadMe 纯粹记录一下自己leetCode做题记录及部分思路笔记,不充当指导性...intervals 区间合并类型 cyclic sort 循环排序 list 链表 ... 这些tag分类都可以在一些平台上找到,VSCode中也有响应的分类tag

    leetcode56-Leetcode56---Merge-Intervals:Leetcode56---合并间隔

    leetcode56 Leetcode56 合并间隔

    LeetCode刷题笔记——56. 合并区间

    def merge(self, intervals: List[List[int]]) -&gt; List[List[int]]: intervals = sorted(intervals) # 区间从小到大排序,若左边界相等,则对右边界排序; i = 1 # 初始位置从第二个区间开始 while i = ...

    Leetcode典型题解答和分析、归纳和汇总——T56(合并区间)

    vector&lt;vector&gt; merge(vector&lt;vector&gt;& intervals){ vector&lt;vector&gt; res; //作为返回结果 if(intervals.empty()) return res; sort(intervals.begin(),intervals.end()); //按照区间的左边界来进行排序 int ...

    Grokking-The-Coding-Interview:我对Grokking The Coding Interview的研究

    ├───merge-intervals ├───miscellaneous ├───modified-binary-search ├───sliding-window ├───subsets ├───top-k-elements ├───topological-sort ├───tree-bfs ├───tree-dfs ├...

    猜单词leetcode-leetcodelearn:leetcodelearn

    猜单词leetcode leetcodelearn 2020-06-03 标题 2020-06-04 标题 2020-06-05 标题 2020-06-06 标题 2020-06-07 标题 标题 知识点 二分法 ...翻转单词顺序com/problems/merge-intervals/) 2020-06-20 标题

    leetcode中文版-LeetCode-OJ:我对leetcodeoj的回答

    merge all overlapping intervals. For example, Given [1,3],[2,6],[8,10],[15,18], return [1,6],[8,10],[15,18]. 首先,按开始对输入顺序进行排序。 其次,用游标将区间一一合并。 /** * Definition for an ...

    Python for data analysis

    features, Get started with data analysis tools in the pandas library, Use high-performance tools to load, clean, transform, merge, and reshape data, Create scatter plots and static or interactive ...

Global site tag (gtag.js) - Google Analytics