Leetcode: 56. Merge Intervals

Question:

Given a collection of intervals, merge all overlapping intervals.
Example:

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].

Note:

First, we can sort the array according to the starting point of each interval, and then compare the adjacent interval to see if there’s overlap, if so, merge them.

Solution:

class Solution {
    public int[][] merge(int[][] intervals) {
    	if (intervals.length == 1 || intervals.length == 0) {
    		return intervals;
    	}
    	Arrays.sort(intervals, (i1, i2)->Inreger.compare(i1[0], i2[0]));
    	List<int[]> res = new ArrayList<>();
    	int[] newInterval = intervals[0];
    	res.add(newInterval);
    	for (int[] interval : intervals) {
    		if (interval[0] <= newInterval[1]) {
    			// if there's an overlapping
    			newInterval[1] = Math.max(interval[1], newInterval[1]);
    		} else {
    			newInterval = interval;
    			res.add(newInterval);
    		}
    	} 
    	return res.toArray(new int[res.size()][]);
    }
}

Time Complexity:

  1. The time complexity of sort is O(nlog(n))
  2. In total is O(nlog(n)) + O(n)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值