Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //方法一 : 由于我们并不需要输出一个skyline, 只需要max. 所以只需要start, end数组并且排序
- func minMeetingRooms(_ intervals: [Interval]) -> Int {
- var start = intervals.map{ $0.start}.sorted()
- var end = intervals.map{ $0.end }.sorted()
- var i = 0
- var j = 0
- var res = 0
- var curr = 0
- while i < start.count && j < end.count{
- if start[i] < end[j]{
- curr += 1
- i += 1
- res = max(res, curr)
- }else{
- curr -= 1
- j += 1
- }
- }
- return res
- }
- // 方法二:合并成一个大的array 排序
- func minMeetingRooms(_ intervals: [Interval]) -> Int {
- var points = [(Int, Bool)]() // index, isstart
- for interval in intervals{
- points.append((interval.start, true))
- points.append((interval.end, false))
- }
- points.sort{
- if $0.0 == $1.0 {
- return !$0.1 ? true : false
- }
- return $0.0 < $1.0
- }
- var res = 0
- var curr = 0
- for p in points {
- if p.1 {
- curr += 1
- res = max(res, curr)
- }else{
- curr -= 1
- }
- }
- return res
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement