57. 插入区间 - LeetCode

57. 插入区间

题目链接

枚举

  • 枚举每个区间,判断该区间与需要插入的区间是否相交
  • 若不相交,且比需要插入的区间小,那么直接放入List中
  • 若不相交,但比需要插入的区间大,那么先把区间插入,再把这个区间放入List
  • 若相交,则把这个区间和需要插入的区间合并,继续枚举
class Solution {
    public int[][] insert(int[][] intervals, int[] newInterval) {
        int len = intervals.length;
        List<int[]> ans = new ArrayList<>(len);
        boolean flag = false;
        int L = newInterval[0], R = newInterval[1];
        for(int[] interval : intervals) {
            if(interval[0] > R){
                if(!flag){
                    ans.add(new int[]{L, R});
                    flag = true;
                }
                ans.add(interval);
            } else if(interval[1] < L){
                ans.add(interval);
            } else {
                L = Math.min(L, interval[0]);
                R = Math.max(R, interval[1]);
            }
        }
        if(!flag) ans.add(new int[]{L, R});
        return ans.toArray(new int[ans.size() - 1][]);
    }
}
posted @ 2021-03-16 15:14  一天到晚睡觉的鱼  阅读(60)  评论(0编辑  收藏  举报