Python、C++、JavaScript、SQL、TypeScript の多様な LeetCode ソリューションを探索してください。面接の準備、学習、複数のプログラミング言語でのコードの練習に最適です。 Github リポジトリ リンク
整数が与えられます n
。 がある n
~から番号が付けられた部屋 0
に n-1
.
2D 整数配列が与えられます 会議
どこ 会議[i] = [開始i 、終了i ]
期間中に会議が開催されることを意味します 半分閉じた状態 時間間隔 [開始i 、終了i )
のすべての値 私を始めます
は 個性的.
会議は次の方法で部屋に割り当てられます。
- 各会議は、使用されていない部屋で行われます。 最低 番号。
- 利用可能な部屋がない場合、会議は部屋が空くまで延期されます。 同じ 元の会議と同じ期間。
- 部屋が使用されなくなった場合、以前のオリジナルがある会議は 始める 時間には余裕を与えるべきです。
戻る の 番号 最も多くの会議が開催された部屋の。 複数の部屋がある場合は戻る のある部屋 最低 番号。
あ 半閉間隔 [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, ミーティング))