[리트코드] 2402. 회의실III

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

정수가 주어졌습니다. NN 번호가 매겨진 방 0 에게 n-1.

2차원 정수 배열이 제공됩니다. 회의 어디 회의[i] = [시작 i , 끝 i ] 회의가 열릴 것이라는 뜻이다. 반 폐쇄 시간 간격 [시작 i , 끝 i ).모든 가치는 내가 시작해 ~이다 고유한.

회의는 다음과 같은 방식으로 회의실에 할당됩니다.

  1. 각 회의는 사용하지 않는 방에서 다음과 같이 진행됩니다. 최저 숫자.
  2. 사용 가능한 회의실이 없는 경우 회의실이 비어 있을 때까지 회의가 연기됩니다. 같은 기간은 원래 회의와 동일합니다.
  3. 회의실을 사용하지 않게 되면 이전 원본이 있는 회의 시작 방에 시간을 주어야합니다.

반품 그만큼 숫자 가장 많은 회의가 열린 방의 모습입니다. 방이 여러개일 경우 반납 가 있는 방 최저 숫자.

에이 반 폐쇄 구간 [a, b) 사이의 간격이다 에이 그리고  포함 에이 그리고 포함하지 않음 .

예시 1:

입력: n = 2, 회의 = [[0,10],[1,5],[2,7],[3,4]]
산출: 0
설명:
- 0번에는 두 방 모두 사용되지 않습니다. - 1번에는 1번 방만 사용되지 않습니다. - 2번에는 두 방이 모두 사용 중입니다. 3번째 회의가 지연됩니다. - 3번째 회의는 두 번째 회의가 지연됩니다. - 5번째 회의는 1번방에서 시작됩니다. ,10) - 시간 10에 두 회의실의 회의가 종료됩니다. [10,11) 기간 동안 회의실 0에서 시작되므로 0이 반환됩니다. 

예 2:

입력: n = 3, 회의 = [[1,20],[2,10],[3,5],[4,9],[6,8]]
산출: 1
설명:
- 1번에는 3개의 회의실이 모두 사용되지 않습니다. - 2번에는 1번방에서 2번째 회의가 시작되지 않습니다. - 3번에는 회의실만 사용됩니다. 2번 회의실은 사용되지 않습니다. - 4번 회의실은 모두 사용 중입니다. 4번 회의는 5번 회의실에서 시작됩니다. 2번은 [5,10] 시간입니다. - 6번 방은 모두 사용 중입니다. 5번째 회의는 10번 방에서 시작됩니다. [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 looking import List class 솔루션: def MostBooked(self, n: int, conference: List[List[int]]) -> int: Meetings.sort() availableRooms = [i for i in range(n)] UsedRooms = [] counter = [0] * 회의의 startTime, endTime에 대한 n: while UsedRooms 및 UsedRooms[0][0] <= startTime :ending, room = heappop(usedRooms) heappush(availableRooms, room) if availableRooms: 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, 회의))
				
			
ko_KR한국어