【重点】【区间问题】56.合并区间

文章介绍了如何使用Java编程实现一个名为Solution的类,其中包含一个方法merge,用于合并给定的整数区间,确保不重叠。通过排序和边界更新,最后返回合并后的新区间数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目
注意有个类似的题目:,注意区分。

Python

class Solution:
    def merge(self, intervals: List[List[int]]) -> List[List[int]]:
        res = list()
        sorted_arr = sorted(intervals, key=lambda x: x[0])
        i = 0
        left, right = inf, -inf
        while i < len(sorted_arr):
            left = min(sorted_arr[i][0], left)
            right = max(sorted_arr[i][1], right)
            i += 1
            if i == len(sorted_arr) or right < sorted_arr[i][0]:
                res.append([left, right])
                left, right = inf, -inf
        
        return res

Java

class Solution {
    public int[][] merge(int[][] intervals) {
        List<List<Integer>> res = new ArrayList<>();
        Arrays.sort(intervals, (a1, a2) -> {
            return a1[0] - a2[0];
        });
        int left = Integer.MAX_VALUE, right = Integer.MIN_VALUE, i = 0;
        while (i < intervals.length) {
            left = Math.min(left, intervals[i][0]);
            right = Math.max(right, intervals[i][1]);
            ++i;
            if (i == intervals.length || right < intervals[i][0]) {
                res.add(new ArrayList<>(Arrays.asList(left, right)));
                left = Integer.MAX_VALUE;
                right = Integer.MIN_VALUE;
            }
        }

        int[][] resArray = new int[res.size()][2];
        for (i = 0; i < res.size(); ++i) {
            resArray[i][0] = res.get(i).get(0);
            resArray[i][1] = res.get(i).get(1);
        }

        return resArray;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值