Skip to content

Commit fb45071

Browse files
committed
fd
1 parent 5bf6320 commit fb45071

File tree

2 files changed

+33
-14
lines changed

2 files changed

+33
-14
lines changed

solution/src/main/java/com/inuker/solution/MergeIntervals.java

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,27 @@ public class MergeIntervals {
1616

1717
// 耗时26ms,时间复杂度O(nlgn)
1818
public List<Interval> merge(List<Interval> intervals) {
19-
List<Interval> result = new LinkedList<Interval>();
20-
if (intervals.size() == 0) {
21-
return result;
22-
}
19+
Interval cur = null;
20+
List<Interval> result = new LinkedList<>();
2321
Collections.sort(intervals, new Comparator<Interval>() {
2422
@Override
2523
public int compare(Interval o1, Interval o2) {
2624
return o1.start - o2.start;
2725
}
2826
});
29-
Interval prev = null;
3027
for (Interval interval : intervals) {
31-
if (prev == null) {
32-
prev = interval;
28+
if (cur == null) {
29+
cur = interval;
30+
} else if (interval.start > cur.end) {
31+
result.add(cur);
32+
cur = interval;
3333
} else {
34-
if (interval.start > prev.end) {
35-
result.add(prev);
36-
prev = interval;
37-
} else {
38-
prev.end = Math.max(prev.end, interval.end);
39-
}
34+
cur.end = Math.max(cur.end, interval.end);
4035
}
4136
}
42-
result.add(prev);
37+
if (cur != null) {
38+
result.add(cur);
39+
}
4340
return result;
4441
}
4542
}

test/src/main/java/com/inuker/test/main.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,26 @@ public static void main(String[] args) {
3232
System.out.print(n + " ");
3333
}
3434
}
35+
36+
public void flatten(TreeNode root) {
37+
helper(root);
38+
}
39+
40+
private TreeNode helper(TreeNode node) {
41+
if (node == null) {
42+
return node;
43+
}
44+
if (node.left == null && node.right == null) {
45+
return node;
46+
}
47+
TreeNode right = node.right;
48+
TreeNode leftTail = helper(node.left);
49+
TreeNode rightTail = helper(node.right);
50+
if (leftTail != null) {
51+
node.right = node.left;
52+
leftTail.right = right;
53+
node.left = null;
54+
}
55+
return rightTail != null ? rightTail : leftTail;
56+
}
3557
}

0 commit comments

Comments
 (0)