《編程之美》讀書筆記05: 1.9 高效率的安排見面會
擴展問題一:
實際上就是求區間的最大重疊次數。書上P57的算法,比較巧妙,但要注意的是:排序時要用到雙關鍵字比較,當兩個值相等時,屬于時間段開始的一定要排在屬于時間段結束的后面,只有這樣才能保證結果的正確性。(假設[3, 4)和[4, 5)能在同一個地方舉行。書上區間段都是用閉區間,本文采用前閉后開。)
考慮到面試安排的時間一般安排在某個整點、半點或者某刻,可以采用計數的方法,如果都安排在整點,每處理一個區間[a, b),就對[a, b)間的所有整數計數一次。最后從計數結果中找出最大值即可。時間復雜度為O(n)(準確的講,應該是O(k*n),k為區間的最大間隔,k<=24)。如果面試安排時間在某個半點、刻,可以對原來的時間乘以一個整數(比如2或4,這實際上就是桶排序設置桶間隔為0.5或0.25)。
Powered by: C++博客 Copyright © flyinghearts