leetcod#56. Merge Intervals

Given a collection of intervals, merge all overlapping intervals.

Example 1:

Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 2:

Input: [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.

拿到手上有部分思路但不知道怎么写
看了别人的发现
思路一
先按前一个元素排序
排序后 创建一个linkedlist
如果数组为空或前一个的后边界小于现在这个后边界
添加
else
merge

class Solution {
    public int[][] merge(int[][] intervals) {
        if(intervals == null){
            return intervals;
        }
        
        
        //sort by starting value
        
        Arrays.sort(intervals,new Comparator<int[]>(){
            public int compare(int[] a,int []b){
                return Integer.compare(a[0],b[0]);
            }
        });
        
        //还有一种写法
        //Arrays.sort(intervals,(a,b) -> Integer.compare(a[0],b[0]));
        
        //if end of previous interval is more than the start of current interval, they are overlap;
        LinkedList<int[]>mergedIntervals= new LinkedList<>();
        
        for(int [] cur: intervals){
            //if the list is empty  or no overlap simply add current interval
            if(mergedIntervals.isEmpty() || mergedIntervals.getLast()[1]<cur[0]){
                mergedIntervals.add(cur);
            }
            else{
                mergedIntervals.getLast()[1] =Math.max(mergedIntervals.getLast()[1],cur[1]);
            }
        }
        
        return mergedIntervals.toArray(new int[0][]);//0 是array dimension
        
    }
}

相关知识
java中集合的使用
java中集合的使用
java中比较器的使用
java中比较器使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值