《中英双解》leetCode 56 Merge Intervals(合并区间)

Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.

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

Example 1:

Input: intervals = [[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: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.
 

Constraints:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/merge-intervals
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

关于这题大家可能都会想到进行元素之间的比较,所以我们先整理一下解题的步骤

1.判断数组是否为空

2.我们将二维数组中的元素进行排序,什么意思呢,就是数组中第一个数组的第一个元素和第二个数组的第一个元素等等,进行排序,数组中第一个数组的第二个元素和第二个数组的第二个元素等等。

3.此时需要两个循环,第一层循环我们需要定义初始的元素,与第二层循环中的元素进行比较

4.此时需要主要i这个值该如何取值

5.返回数组

现在看看代码

class Solution {
    public int[][] merge(int[][] intervals) {
      List<int[]> res = new ArrayList<>();
      if(intervals == null || intervals.length == 0) return res.toArray(new int[0][]);
      Arrays.sort(intervals,(a,b) -> a[0] - b[0]);
      int i = 0;
      while(i < intervals.length){
         int left = intervals[i][0];
         int right = intervals[i][1];
         while(i < intervals.length - 1 && right >= intervals[i + 1][0]){
            i++;
            right = Math.max(right,intervals[i][1]);
         }
         i++;//覆盖一个元素此时需要加一
         res.add(new int[]{left,right});
      }
      return res.toArray(new int[0][]);
   }
}

一定要理清思路,多写代码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值