有一堆會議,每個會議都有開始時間和結束時間,問至少需要幾個房間可以安排下這些會議?
解決思路:
這是個貪心類問題, 每個會議都有結束時間和開始時間,可以對兩個時間分開儲存並排序,從最先開始的會議開始遍歷,只要當前會議的開始時間小於結束時間陣列中的第乙個結束時間,就需要重新開闢乙個房間。接著看下乙個會議的開始時間,如果開始時間依舊小於結束時間,那麼還需要乙個房間用作這個會議,如果開始時間大於等於結束時間,說明這個會議開始的時候,前面的會議中至少有乙個已經結束了,此時不需要重新開闢乙個新房間,復用即可,同時因為上乙個結束時間已經過去了,所以結束時間陣列下標指向下乙個結束時間。
**流程:
開始時間、結束時間分開排序;
從頭開始遍歷開始時間陣列,如果當前開始時間小於結束時間,房間數 + 1, 開始時間下標向前移動,結束時間下標不動;
如果結束時間大於等於結束時間,開始時間向前移動,同時結束時間下標向前移動,房間數不變;
python **:
def
meetingroom
(arr)
:
start_time =
end_time =
for time in arr:0]
)1])
start_time =
sorted
(start_time)
end_time =
sorted
(end_time)
res =
0 j =
0for i in
range
(len
(start_time)):
if start_time[i]
< end_time[j]
: res +=
1else
: j +=
1return res
解法二:
也可以使用小跟堆來做,但時間複雜度都一樣,o(nlogn),具體思路也是將起始時間排序,然後遍歷時間時,將每個結束時間壓入堆中, 如果當前開始時間小於等於小跟堆的堆頂結束時間,從堆頂彈出乙個元素,表示有乙個會議室已經結束使用,可以復用該會議室。最後堆中剩下的元素個數就是所需的房間數。
貪心演算法 堆 安排會議室
一些專案要占用乙個會議室宣講,會議室不能同時容納兩個專案的宣講。給你每乙個專案開始的時間和結束的時間 給你乙個陣列,裡面是乙個個具體的專案 你來安排宣講的日程,要求會議室進行 的宣講的場次最多。返回這個最多的宣講場次。貪心 按照結束時間最早排序 public class bestarrange 小根...
貪心演算法 會議安排
題目描述 在大公司裡,會議是很多的,開會得有場子,要場子你得先在電子流裡預訂。如果你是專案組新來的小弟,那麼恭喜你,每天搶訂會議室的任務就光榮的分給你了。老大要求你盡可能多的訂會議室,但是這些會議室之間不能有時間衝突。input input檔案中可以包括多個測試案例。t t 20 輸入檔案的第一行表...
演算法題 安排會議室 貪心演算法的應用
題目描述 題目描述 在大公司裡,會議是很多的,開會得有場子,要場子你得先在電子流裡預訂。如果你是專案組新來的小弟,那麼恭喜你,每天搶訂會議室的任務就光榮的分給你了。老大要求你盡可能多的訂會議室,但是這些會議室之間不能有時間衝突。input input檔案中可以包括多個測試案例。t t 20 輸入檔案...