Algorithm
Leet Code Medium
[Swift] Merge Intervals
[Swift] Merge Intervals
Given an array of intervals where intervals[i] = [start$_i$, end$_i$], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.
Example 1:
Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Explanation: Since intervals [1,3] and [2,6] overlaps, merge them into [1,6].
Example 1:
Input: intervals = [[1,4],[4,5]]
Output: [[1,5]]
Explanation: Intervals [1,4] and [4,5] are considered overlapping.
Constraints:
- 1 <= intervals.length <= 10$^4$
- intervals[i].length == 2
- 0 <= starti <= endi <= 10$^4$
문제 이해
코드
class Solution {
func merge(_ intervals: [[Int]]) -> [[Int]] {
if intervals.count < 2 {
return intervals
}
var intervals = intervals.sorted { $0.first! < $1.first! }
var ret: [[Int]] = []
for i in 1 ..< intervals.count {
let left = intervals[i - 1]
var right = intervals[i]
if left.last! >= right.first! && right.last! >= left.first! {
right[0] = min(left[0], right[0])
right[1] = max(left[1], right[1])
intervals[i] = right
} else {
ret.append(left)
}
}
ret.append(intervals.last!)
return ret
}
}
풀이
-
다른 분의 멋진 코드
잘 배웠습니다.
-
댓글남기기