File tree Expand file tree Collapse file tree 2 files changed +33
-14
lines changed
solution/src/main/java/com/inuker/solution
test/src/main/java/com/inuker/test Expand file tree Collapse file tree 2 files changed +33
-14
lines changed Original file line number Diff line number Diff line change @@ -16,30 +16,27 @@ public class MergeIntervals {
16
16
17
17
// 耗时26ms,时间复杂度O(nlgn)
18
18
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 <>();
23
21
Collections .sort (intervals , new Comparator <Interval >() {
24
22
@ Override
25
23
public int compare (Interval o1 , Interval o2 ) {
26
24
return o1 .start - o2 .start ;
27
25
}
28
26
});
29
- Interval prev = null ;
30
27
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 ;
33
33
} 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 );
40
35
}
41
36
}
42
- result .add (prev );
37
+ if (cur != null ) {
38
+ result .add (cur );
39
+ }
43
40
return result ;
44
41
}
45
42
}
Original file line number Diff line number Diff line change @@ -32,4 +32,26 @@ public static void main(String[] args) {
32
32
System .out .print (n + " " );
33
33
}
34
34
}
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
+ }
35
57
}
You can’t perform that action at this time.
0 commit comments