Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func employeeFreeTime(_ schedule: [[Interval]]) -> [Interval] {
- var res = [Interval]()
- var map = [(Int, Bool)]() // timestamp, isStart
- for sche in schedule{
- for inter in sche {
- map.append((inter.start, true))
- map.append((inter.end, false))
- }
- }
- map.sort{
- if $0.0 == $1.0 {
- return $0.1 ? false : true
- }
- return $0.0 < $1.0
- }
- var i = 0
- var preEnd = -1
- var startCount = 0
- for i in 0 ..< map.count{
- let cur = map[i]
- if cur.1 {
- if preEnd != -1 && preEnd != cur.0 && startCount == 0{
- res.append(Interval(preEnd, cur.0))
- }
- startCount += 1
- }else{
- preEnd = max(preEnd, cur.0)
- startCount -= 1
- }
- }
- return res
- }
Add Comment
Please, Sign In to add comment