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

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

leetcode 0056

说明

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

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

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

题目描述

在这里插入图片描述

思路

模拟一下手动插入的过程就行了。

先按照区间左侧排个序,如果区间有交叉就更改一下,没有交叉就新插入一个区间。

class Solution {
public int[][] merge(int[][] intervals) {
if (intervals.length < 2) {
return intervals; } Arrays.sort(intervals, new Comparator
() {
@Override public int compare(int[] o1, int[] o2) {
if (o1[0] == o2[0]) {
return o1[1] - o2[1]; } return o1[0] - o2[0]; } }); List
> ll = new ArrayList
>(); ll.add(new ArrayList
()); ll.get(0).add(intervals[0][0]); ll.get(0).add(intervals[0][1]); for (int[] a : intervals) { if (a[0] > ll.get(ll.size() - 1).get(1)) { ll.add(new ArrayList
()); ll.get(ll.size() - 1).add(a[0]); ll.get(ll.size() - 1).add(a[1]); continue; } for (List
li : ll) { if (a[1] > li.get(1) && a[0] <= li.get(1)) { li.remove(1); li.add(a[1]); } else { continue; } } } int[][] res = new int[ll.size()][2]; for (int i = 0; i < ll.size(); i++) { res[i][0] = ll.get(i).get(0); res[i][1] = ll.get(i).get(1); } return res; }}
上一篇:leetcode做题记录0057
下一篇:leetcode做题记录0055

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月08日 18时58分26秒