Skip to content

Commit 0f67136

Browse files
committed
Solution: Merge Intervals
1 parent 600ab15 commit 0f67136

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

merge-intervals/flynn.go

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
Big O
3+
- N: 주어진 배열 intervals의 길이
4+
- Time complexity: O(NlogN)
5+
- intervals를 start의 오름차순으로 정렬 -> O(NlogN)
6+
- 반복문 -> O(N)
7+
- O(NlogN + N) = O(NlogN)
8+
- Space complexity: O(N)
9+
- 정답 배열의 크기 -> O(N)
10+
*/
11+
12+
import "sort"
13+
14+
func merge(intervals [][]int) [][]int {
15+
sort.Slice(intervals, func(i, j int) bool {
16+
return intervals[i][0] < intervals[j][0]
17+
})
18+
res := make([][]int, 0)
19+
start := intervals[0][0]
20+
end := intervals[0][1]
21+
for i := 1; i < len(intervals); i++ {
22+
curr := intervals[i]
23+
if end >= curr[0] {
24+
end = max(end, curr[1])
25+
} else {
26+
res = append(res, []int{start, end})
27+
start = curr[0]
28+
end = curr[1]
29+
}
30+
}
31+
res = append(res, []int{start, end})
32+
return res
33+
}
34+
35+
func max(a, b int) int {
36+
if a > b {
37+
return a
38+
} else {
39+
return b
40+
}
41+
}

0 commit comments

Comments
 (0)