Advertisement
HXXXXJ

253. Meeting Rooms II

Mar 24th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Swift 1.37 KB | None | 0 0
  1. //方法一 : 由于我们并不需要输出一个skyline, 只需要max. 所以只需要start, end数组并且排序  
  2.  
  3. func minMeetingRooms(_ intervals: [Interval]) -> Int {
  4.         var start = intervals.map{ $0.start}.sorted()
  5.         var end = intervals.map{ $0.end }.sorted()
  6.         var i = 0
  7.         var j = 0
  8.         var res = 0
  9.         var curr = 0
  10.         while i < start.count && j < end.count{
  11.             if start[i] < end[j]{
  12.                 curr += 1
  13.                 i += 1
  14.                 res = max(res, curr)
  15.             }else{
  16.                 curr -= 1
  17.                 j += 1
  18.             }
  19.         }
  20.         return res
  21.     }
  22.  
  23. // 方法二:合并成一个大的array 排序
  24.  
  25.     func minMeetingRooms(_ intervals: [Interval]) -> Int {
  26.         var points = [(Int, Bool)]() // index, isstart
  27.         for interval in intervals{
  28.             points.append((interval.start, true))
  29.             points.append((interval.end, false))
  30.         }
  31.         points.sort{
  32.             if $0.0 == $1.0 {
  33.                 return !$0.1 ? true : false
  34.             }
  35.             return $0.0 < $1.0
  36.         }
  37.         var res = 0
  38.         var curr = 0
  39.         for p in points {
  40.             if p.1 {
  41.                 curr += 1
  42.                 res = max(res, curr)
  43.             }else{
  44.                 curr -= 1
  45.             }
  46.         }
  47.         return res
  48.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement