leetcode57——插入区间

题意:

 代码:

class Solution {
    public int[][] insert(int[][] intervals, int[] newInterval) {
        //已经排序
        ArrayList<int[]> res=new ArrayList<>();

        int len=intervals.length;
        int num1=newInterval[0];
        int num2=newInterval[1];

        int local=0; //定位 内部数组
        while(local<len && intervals[local][1]<num1){
            res.add(new int[] {intervals[local][0],intervals[local][1]});
            ++local;
        }

        while(local<len && intervals[local][0]<=num2){
            //处理交叉数组   即找出最大值 和最小值

            newInterval[0]=Math.min(intervals[local][0],newInterval[0]);
            newInterval[1]=Math.max(intervals[local][1],newInterval[1]);
            ++local;
        }

        res.add(new int[] {newInterval[0],newInterval[1]});

        while(local<len){
            res.add(new int[] {intervals[local][0],intervals[local][1]});
            local++;
        }

        return res.toArray(new int[res.size()][2]);
        //处理尾巴数组


        /*if(num2<=intervals[0][0]){
            //直接加入返回
        }
        
        if(num1>=intervals[len-1][1]){
            //直接加入返回
        }*/

        /*for(int i=0;i<len;i++){
            if(num1<=intervals[i][1]){
                //new的首位数字 在某一组数的中间 那么 可以进行合并操作
                
            }
        }*/ 
    }
}

思路:

先找到插入的位置

然后在插入值的最大值  和被插位置的最小值 之间取极值保存

最后保存剩下的

依旧是 数组返回形式

集合

list.add(new int[] {插入的元素 这样作为一个一维数组得以保存})

返回时  要求数组形式

list.toArray(new int[行][列]);

toArray();括号内部是数组大小

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值