File tree 2 files changed +36
-0
lines changed
2 files changed +36
-0
lines changed Original file line number Diff line number Diff line change 54
54
| 53 | [ Maximum SubArray] ( https://leetcode.com/problems/maximum-subarray ) | [ ![ Java] ( assets/java.png )] ( src/MaximumSubArray.java ) [ ![ Python] ( assets/python.png )] ( python/maximum_sum_subarray.py ) | |
55
55
| 54 | [ Spiral Matrix] ( https://leetcode.com/problems/spiral-matrix ) | [ ![ Java] ( assets/java.png )] ( src/SpiralMatrix.java ) | |
56
56
| 55 | [ Jump Game] ( https://leetcode.com/problems/jump-game ) | [ ![ Java] ( assets/java.png )] ( src/JumpGame.java ) | |
57
+ | 56 | [ Merge Intervals] ( https://leetcode.com/problems/merge-intervals ) | [ ![ Java] ( assets/java.png )] ( src/MergeIntervals.java ) | |
57
58
| 58 | [ Length of Last Word] ( https://leetcode.com/problems/length-of-last-word ) | [ ![ Java] ( assets/java.png )] ( src/LengthOfLastWord.java ) [ ![ Python] ( assets/python.png )] ( python/length_of_last_word.py ) | |
58
59
| 66 | [ Plus One] ( https://leetcode.com/problems/plus-one ) | [ ![ Java] ( assets/java.png )] ( src/PlusOne.java ) [ ![ Python] ( assets/python.png )] ( python/plus_one.py ) | |
59
60
| 67 | [ Add Binary] ( https://leetcode.com/problems/add-binary ) | [ ![ Java] ( assets/java.png )] ( src/AddBinary.java ) [ ![ Python] ( assets/python.png )] ( python/add_binary.py ) | |
Original file line number Diff line number Diff line change
1
+ // https://leetcode.com/problems/merge-intervals/submissions
2
+ // T: O(n log(n))
3
+ // S: O(n)
4
+
5
+ import java .util .ArrayList ;
6
+ import java .util .Arrays ;
7
+ import java .util .Comparator ;
8
+ import java .util .List ;
9
+
10
+ public class MergeIntervals {
11
+ public int [][] merge (int [][] intervals ) {
12
+ Arrays .sort (intervals , Comparator .comparingInt (interval -> interval [0 ]));
13
+ final List <int []> mergedIntervals = new ArrayList <>();
14
+ int start = intervals [0 ][0 ], stop = intervals [0 ][1 ];
15
+ for (int i = 1 ; i < intervals .length ; i ++) {
16
+ if (intervals [i ][0 ] <= stop ) stop = Math .max (stop , intervals [i ][1 ]);
17
+ else {
18
+ mergedIntervals .add (new int [] {start , stop });
19
+ start = intervals [i ][0 ];
20
+ stop = intervals [i ][1 ];
21
+ }
22
+ }
23
+ mergedIntervals .add (new int [] {start , stop });
24
+ return toArray (mergedIntervals );
25
+ }
26
+
27
+ private int [][] toArray (List <int []> list ) {
28
+ int [][] result = new int [list .size ()][2 ];
29
+ int i = 0 ;
30
+ for (int [] interval : list ) {
31
+ result [i ++] = interval ;
32
+ }
33
+ return result ;
34
+ }
35
+ }
You can’t perform that action at this time.
0 commit comments