Meeting Room II

升级版Interval & Meeting Room 问题

Meeting Room II_第1张图片

实际上就是求最少的number of conflict. 因为两个interval 时间上conflict的话就需要多一个房间。

Meeting Room II_第2张图片

本来自信满满,过了50个test后,发现了问题。。

这个input 排序好会变成: [4,9] [4,17] [9,10]

而我的算法会让[9, 10] 以为要和[4, 17] 抢房间,这样就得多一个room。

但其实[4, 9] [9, 10] 无缝连接, [4, 17] 单独用一个房间就好。

Meeting Room II_第3张图片

无奈之下,只好又看起了答案T^T

这个答案简直是神级。。完美解决了我算法的弊端!

Meeting Room II_第4张图片

他用了两个array, 一个是start的array, 一个是end的array。我只用了一个array,但是这是精华所在。 因为start time是有可能重复的,就像:[4,9] [4,17] [9,10]  

starts[i] < ends[endsItr] 就完美的解决了这个问题。   9<17 会导致rooms ++,

但是 9<9 没有导致room conflict。 这时候iterate endsItr就好。 【 这个东西感觉只能意会 很难说清楚呀。。】


Greedy 算法: 先按start时间排序。

Iterate intervals, 每一次从之前start比较早的里选出一个finish最早的跟当前interval 的start time比较一下。如果start< end, room ++. 

Meeting Room II_第5张图片

你可能感兴趣的:(Meeting Room II)