int minMeetingRooms(vector<vector<int>>& intervals) {
vector<vector<int>> sorted = intervals; sort(sorted.begin(), sorted.end());
vector<int> roomEnds;
for (auto& iv : sorted) {
int start = iv[0], end = iv[1];
bool placed = false;
for (size_t r = 0; r < roomEnds.size(); r++) {
if (roomEnds[r] <= start) {
roomEnds[r] = end;
placed = true;
break;
}
}
if (!placed) roomEnds.push_back(end);
}
return roomEnds.size();
}
public int minMeetingRooms(int[][] intervals) {
int[][] sorted = intervals.clone();
Arrays.sort(sorted, (a, b) -> a[0] - b[0]);
List<Integer> roomEnds = new ArrayList<>();
for (int[] iv : sorted) {
int start = iv[0], end = iv[1];
boolean placed = false;
for (int r = 0; r < roomEnds.size(); r++) {
if (roomEnds.get(r) <= start) {
roomEnds.set(r, end);
placed = true;
break;
}
}
if (!placed) roomEnds.add(end);
}
return roomEnds.size();
}
def min_meeting_rooms(intervals):
sorted_iv = sorted(intervals, key=lambda p: p[0])
room_ends = []
for start, end in sorted_iv:
placed = False
for r in range(len(room_ends)):
if room_ends[r] <= start:
room_ends[r] = end
placed = True
break
if not placed: room_ends.append(end)
return len(room_ends)
function minMeetingRooms(intervals: number[][]): number {
const sorted = [...intervals].sort((a, b) => a[0] - b[0]);
const roomEnds: number[] = [];
for (const [start, end] of sorted) {
let placed = false;
for (let r = 0; r < roomEnds.length; r++) {
if (roomEnds[r] <= start) {
roomEnds[r] = end;
placed = true;
break;
}
}
if (!placed) roomEnds.push(end);
}
return roomEnds.length;
}
int minMeetingRooms(vector<vector<int>>& intervals) {
vector<array<int, 2>> events;
for (auto& iv : intervals) { events.push_back({iv[0], 1}); events.push_back({iv[1], -1}); }
sort(events.begin(), events.end());
int current = 0, best = 0;
for (auto& ev : events) {
current += ev[1];
best = max(best, current);
}
return best;
}
public int minMeetingRooms(int[][] intervals) {
List<int[]> events = new ArrayList<>();
for (int[] iv : intervals) { events.add(new int[]{iv[0], 1}); events.add(new int[]{iv[1], -1}); }
events.sort((a, b) -> a[0] != b[0] ? a[0] - b[0] : a[1] - b[1]);
int current = 0, best = 0;
for (int[] ev : events) {
current += ev[1];
best = Math.max(best, current);
}
return best;
}
def min_meeting_rooms(intervals):
events = []
for start, end in intervals: events += [(start, 1), (end, -1)]
events.sort()
current = best = 0
for _, delta in events:
current += delta
best = max(best, current)
return best
function minMeetingRooms(intervals: number[][]): number {
const events: number[][] = [];
for (const [start, end] of intervals) events.push([start, 1], [end, -1]);
events.sort((a, b) => a[0] - b[0] || a[1] - b[1]);
let current = 0, best = 0;
for (const [, delta] of events) {
current += delta;
best = Math.max(best, current);
}
return best;
}
int minMeetingRooms(vector<vector<int>>& intervals) {
vector<int> starts, ends;
for (auto& iv : intervals) { starts.push_back(iv[0]); ends.push_back(iv[1]); }
sort(starts.begin(), starts.end());
sort(ends.begin(), ends.end());
int rooms = 0, e = 0;
for (size_t s = 0; s < starts.size(); s++) {
if (starts[s] < ends[e]) rooms++;
else e++;
}
return rooms;
}
public int minMeetingRooms(int[][] intervals) {
int n = intervals.length;
int[] starts = new int[n], ends = new int[n];
for (int i = 0; i < n; i++) { starts[i] = intervals[i][0]; ends[i] = intervals[i][1]; }
Arrays.sort(starts);
Arrays.sort(ends);
int rooms = 0, e = 0;
for (int s = 0; s < n; s++) {
if (starts[s] < ends[e]) rooms++;
else e++;
}
return rooms;
}
def min_meeting_rooms(intervals):
starts = sorted(x[0] for x in intervals)
ends = sorted(x[1] for x in intervals)
rooms = e = 0
for s in range(len(starts)):
if starts[s] < ends[e]: rooms += 1
else: e += 1
return rooms
function minMeetingRooms(intervals: number[][]): number {
const starts = intervals.map((x) => x[0]).sort((a, b) => a - b);
const ends = intervals.map((x) => x[1]).sort((a, b) => a - b);
let rooms = 0, e = 0;
for (let s = 0; s < starts.length; s++) {
if (starts[s] < ends[e]) rooms++;
else e++;
}
return rooms;
}
int minMeetingRooms(vector<vector<int>>& intervals) {
int maxTime = 0;
for (auto& iv : intervals) maxTime = max(maxTime, iv[1]);
vector<int> delta(maxTime + 2, 0);
for (auto& iv : intervals) {
delta[iv[0]]++;
delta[iv[1]]--;
}
int current = 0, best = 0;
for (int t = 0; t <= maxTime; t++) {
current += delta[t];
best = max(best, current);
}
return best;
}
public int minMeetingRooms(int[][] intervals) {
int maxTime = 0;
for (int[] iv : intervals) maxTime = Math.max(maxTime, iv[1]);
int[] delta = new int[maxTime + 2];
for (int[] iv : intervals) {
delta[iv[0]]++;
delta[iv[1]]--;
}
int current = 0, best = 0;
for (int t = 0; t <= maxTime; t++) {
current += delta[t];
best = Math.max(best, current);
}
return best;
}
def min_meeting_rooms(intervals):
max_time = 0
for iv in intervals: max_time = max(max_time, iv[1])
delta = [0] * (max_time + 2)
for start, end in intervals:
delta[start] += 1
delta[end] -= 1
current = best = 0
for t in range(max_time + 1):
current += delta[t]
best = max(best, current)
return best
function minMeetingRooms(intervals: number[][]): number {
let maxTime = 0;
for (const [, end] of intervals) maxTime = Math.max(maxTime, end);
const delta = new Int32Array(maxTime + 2);
for (const [start, end] of intervals) {
delta[start]++;
delta[end]--;
}
let current = 0, best = 0;
for (let t = 0; t <= maxTime; t++) {
current += delta[t];
best = Math.max(best, current);
}
return best;
}