leetcode做题记录0057
发布日期:2021-05-07 13:48:25 浏览次数:24 分类:技术文章

本文共 1607 字,大约阅读时间需要 5 分钟。

leetcode 0057

说明

只是为了记录一下,不求多快,也不深究。

会简要描述思路,代码中不写注释。

如碰到不会做的用了别人代码会在博客中标出。

题目描述

在这里插入图片描述

思路

先找出左区间和右区间的理想位置,中间的都不要了,因为被包含了。

再处理一下左右两边有重合的区间。

注意边界条件。

class Solution {       public int[][] insert(int[][] intervals, int[] newInterval) {   		if (intervals.length < 1) {   			int[][] res = new int[1][2];			res[0][0] = newInterval[0];			res[0][1] = newInterval[1];			return res;		}		int idxLeft = intervals.length, idxRight = intervals.length;		for (int i = 0; i < intervals.length; i++) {   			if (intervals[i][0] >= newInterval[0]) {   				idxLeft = i;				break;			}		}		for (int i = 0; i < intervals.length; i++) {   			if (intervals[i][1] >= newInterval[1]) {   				idxRight = i;				break;			}		}		List
> lli = new ArrayList
>(); for (int i = 0; i < intervals.length; i++) { if (i == idxLeft) { List
li = new ArrayList
(); li.add(newInterval[0]); li.add(newInterval[1]); lli.add(li); } if (i < idxLeft || i >= idxRight) { List
li = new ArrayList
(); li.add(intervals[i][0]); li.add(intervals[i][1]); lli.add(li); } else { continue; } } if (idxLeft == intervals.length) { List
li = new ArrayList
(); li.add(newInterval[0]); li.add(newInterval[1]); lli.add(li); } for (int i = 0; i < lli.size() - 1; i++) { if (lli.get(i + 1).get(0) <= lli.get(i).get(1)) { if (lli.get(i).get(1) < lli.get(i + 1).get(1)) { lli.get(i).remove(1); lli.get(i).add(lli.get(i + 1).get(1)); } lli.remove(i + 1); i--; } } int[][] res = new int[lli.size()][2]; for (int i = 0; i < lli.size(); i++) { res[i][0] = lli.get(i).get(0); res[i][1] = lli.get(i).get(1); } return res; }}
上一篇:leetcode做题记录0058
下一篇:leetcode做题记录0056

发表评论

最新留言

感谢大佬
[***.8.128.20]2025年04月15日 18时01分46秒