zoukankan      html  css  js  c++  java
  • 【力扣】57. 插入区间

    给出一个无重叠的 ,按照区间起始端点排序的区间列表。

    在列表中插入一个新的区间,你需要确保列表中的区间仍然有序且不重叠(如果有必要的话,可以合并区间)。

    示例 1:

    输入:intervals = [[1,3],[6,9]], newInterval = [2,5]
    输出:[[1,5],[6,9]]
    示例 2:

    输入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
    输出:[[1,2],[3,10],[12,16]]
    解释:这是因为新的区间 [4,8] 与 [3,5],[6,7],[8,10] 重叠。
     

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/insert-interval

    时间复杂度:O(n)

    空间复杂度:O(1)

    class Solution {
        public int[][] insert(int[][] intervals, int[] newInterval) {
            int left = newInterval[0];
            int right = newInterval[1];
            List<int []> resultList = new ArrayList<int []>();
            boolean addNewValue = false;
            for(int [] layer : intervals){
                //说明该层最大的值还要小于left值
                if(layer[1] < left){
                    resultList.add(layer);
                } else if(layer[0] > right){
                    //若是该层的最小值大于right
                    //那么首先要把left和right放入到list中
                    if(!addNewValue){
                        resultList.add(new int[]{left,right});
                        addNewValue = true;
                    }
                    //再把当前层放入list
                    resultList.add(layer);
                } else {
                    //比较left,right得到本层的最大值,最小值,再继续跟下一层对比
                    left = Math.min(layer[0],left);
                    right = Math.max(layer[1],right);
                }
            }
            //如果还没有把left和right放入到list中
            if(!addNewValue){
                resultList.add(new int[]{left,right});
            }
            int result[][] = new int [resultList.size()][2];
            for(int i = 0 ; i < resultList.size() ; i++){
                result[i][0] = resultList.get(i)[0];
                result[i][1] = resultList.get(i)[1];
            }
            return result;
        }
    }
    一个入行不久的Java开发,越学习越感觉知识太多,自身了解太少,只能不断追寻
  • 相关阅读:
    Codeforces Round #363 (Div. 2)
    Codeforces Round #312 (Div. 2)
    Codeforces Round #354 (Div. 2)
    Codeforces Round #353 (Div. 2) A
    Codeforces Round #347 (Div. 2) B
    Codeforces Round #326 (Div. 2)
    Spring中数据库技术--获得DataSource
    查询练习
    查询语句
    Oracle数据库的使用
  • 原文地址:https://www.cnblogs.com/fengtingxin/p/13929128.html
Copyright © 2011-2022 走看看