貪心演算法 會議室問題

2021-10-08 18:34:43 字數 1115 閱讀 3859

有一堆會議,每個會議都有開始時間和結束時間,問至少需要幾個房間可以安排下這些會議?

解決思路:

這是個貪心類問題, 每個會議都有結束時間和開始時間,可以對兩個時間分開儲存並排序,從最先開始的會議開始遍歷,只要當前會議的開始時間小於結束時間陣列中的第乙個結束時間,就需要重新開闢乙個房間。接著看下乙個會議的開始時間,如果開始時間依舊小於結束時間,那麼還需要乙個房間用作這個會議,如果開始時間大於等於結束時間,說明這個會議開始的時候,前面的會議中至少有乙個已經結束了,此時不需要重新開闢乙個新房間,復用即可,同時因為上乙個結束時間已經過去了,所以結束時間陣列下標指向下乙個結束時間。

**流程:

開始時間、結束時間分開排序;

從頭開始遍歷開始時間陣列,如果當前開始時間小於結束時間,房間數 + 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 輸入檔案...