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