【数组】【自定义排序】Leetcode 56. 合并区间

【数组】【自定义排序】Leetcode 56. 合并区间

---------------🎈🎈56. 合并区间 题目链接🎈🎈-------------------
在这里插入图片描述


在这里插入图片描述

解法1

进行二维数组按照第一维度升序排序:Arrays.sort( nums, (o1,o2) -> o1[0]-o2[0] )
如果排序后下一个的首端,大于result中的后端,那么就添加其整体到result的尾部
如果排序后下一个的首端,小于等于result中的后端,那么就可以合并二者,再去判断后端和result后端的大小
–如果下一个的后端,大于result中的后端,那么就更新result中的后端为下一个的后端
–如果下一个的后端,小于等于result中的后端,那么就不改变result
输出指定范围的数组:Arrays.copyOf( result, 长度)

class Solution {
    public int[][] merge(int[][] intervals) {
        int[][] result = new int[intervals.length][2];

        // 先按照区间起始位置排序
        Arrays.sort(intervals,(o1,o2) -> o1[0]-o2[0]);
        result[0] = new int[]{intervals[0][0],intervals[0][1]};
        int j = 0;
        for(int i=1; i < intervals.length; i++){
            if(intervals[i][0] > result[j][1]){ // 如果下一个的首端,大于result中的后端,那么就添加其到result的尾部
                result[++j] = intervals[i];
            }
            else{ // 如果下一个的首端,小于等于result中的后端,那么就可以合并二者,再去判断后端和result后端的大小
                if(intervals[i][1] > result[j][1]){ // 如果下一个的后端,大于result中的后端,那么就更新result中的后端为下一个的后端
                    result[j][1] = intervals[i][1];
                }
                else{// 如果下一个的后端,小于等于result中的后端,那么就不改变result
                    continue;
                }

            }

        }
        return Arrays.copyOf(result, j+1);
   }
}        
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值