[リートコード] 2402. 会議室Ⅲ

Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク

整数が与えられます n。 がある n ~から番号が付けられた部屋 0 に n-1.

2D 整数配列が与えられます 会議 どこ 会議[i] = [開始i 、終了i ] 期間中に会議が開催されることを意味します 半分閉じた状態 時間間隔 [開始i 、終了i )のすべての値 私を始めます は 個性的.

会議は次の方法で部屋に割り当てられます。

  1. 各会議は、使用されていない部屋で行われます。 最低 番号。
  2. 利用可能な部屋がない場合、会議は部屋が空くまで延期されます。 同じ 元の会議と同じ期間。
  3. 部屋が使用されなくなった場合、以前のオリジナルがある会議は 始める 時間には余裕を与えるべきです。

戻る の 番号 最も多くの会議が開催された部屋の。 複数の部屋がある場合は戻る のある部屋 最低 番号。

あ 半閉間隔 [a、b) 間の間隔です ある そして b 含む ある そして 含まない b.

例 1:

入力: n = 2、会議 = [[0,10],[1,5],[2,7],[3,4]]
出力: 0
説明:
- 時間 0 では、両方の部屋が使用されていません。 - 時間 1 では、部屋 1 のみが使用されていません。 - 時間 2 では、両方の部屋が使用されています。 3 番目の会議は遅延しています。 - 時間 3 で、両方の会議が使用されています。 - 時間 5 で、会議室 1 で会議が開始されます。 ,10) - 時間 10 で、両方のルームでの 4 番目のミーティングが期間 [10,11) で開始されるため、0 が返されます。 

例 2:

入力: n = 3、会議 = [[1,20],[2,10],[3,5],[4,9],[6,8]]
出力: 1
説明:
- 時間 1 では、3 つの部屋はすべて使用されていません。 - 時間 2 では、部屋 1 と 2 は使用されていません。 - 時間 3 では、部屋のみが開始されます。 2 は使用されていません。 3 番目の会議は会議室 2 で開始されます。 - 時刻 4 で、3 つの会議室がすべて使用されています。 - 時刻 5 で、会議室 2 での会議が終了します。期間 [5,10] の場合は 2) - 時間 6 では、3 つの会議室がすべて使用中です。 - 時間 10 では、会議室 1 と会議室 2 が終了します。期間 [10,12) では、ルーム 0 は 1 回のミーティングを開催し、ルーム 1 と 2 はそれぞれ 2 回のミーティングを開催したため、1 を返します。 

制約:

  • 1 <= n <= 100
  • 1 <= ミーティングの長さ <= 10 5
  • 会議[i].length == 2
  • 0 <= 開始i < 終了i <= 5 * 10 5
  • のすべての値 私を始めます は 個性的.

パイソン

				
					# 時間計算量: O(nlogn) # 空間計算量: O(n) from heapq import heappop, heappush from タイピング import リスト クラス 解決策: def mostBooked(self, n: int, events: List[List[int]]) -> int:meetings.sort() availableRooms = [i for i in range(n)] usedRooms = [] counter = [0] * n は会議の startTime、endTime の場合: usedRooms および usedRooms[0][0] <= startTime : 終了、部屋 = heappop(usedRooms) heappush(availableRooms, room) 使用できない場合はRooms: end、room = heappop(usedRooms) endTime = end + (endTime - startTime) heappush(availableRooms, room) room = heappop(availableRooms) heappush( usedRooms, (endTime, room)) counter[room] += 1 return counter.index(max(counter)) n = 3 会議 = [[1, 20], [2, 10], [3, 5], [ 4, 9], [6, 8]] print(Solution().mostBooked(n, ミーティング))
				
			
ja日本語