-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path253.meeting-rooms-ii.js
59 lines (55 loc) · 1.37 KB
/
253.meeting-rooms-ii.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
* @lc app=leetcode id=253 lang=javascript
*
* [253] Meeting Rooms II
*/
/**
* @param {number[][]} intervals
* @return {number}
*/
/**
* Definition for an interval.
* function Interval(start, end) {
* this.start = start;
* this.end = end;
* }
*/
/**
* @param {Interval[]} intervals
* @return {number}
*/
function Interval(start, end) {
this.start = start;
this.end = end;
}
var minMeetingRooms = function(intervals) {
intervals = intervals.map(interval => new Interval(interval[0], interval[1]));
var intervalsOrderByStart = intervals.concat().sort(function(a, b) {
return a.start - b.start;
});
var intervalsOrderByEnd = intervals.sort(function(a, b) {
return a.end - b.end;
});
console.log({ starts: intervalsOrderByStart, ends: intervalsOrderByEnd });
var rooms = 0;
var end = 0;
/*
intervalsOrderByStart [[0,30],[5,10],[15,20]]
intervalsOrderByEnd [[5,10],[15,20],[0,30]]
[0,30] [5,10], 10>0,true room = 1
[5,10],[5,10] ,10>5,true room =2
[15,20],[5,10], 10>15,false room = 2
smart but why it works
because the maximum < intervals.length,
our problem is for each element, find the most properly item that overlap,
if overlap, we add it by one
*/
for (var i = 0; i < intervals.length; i++) {
if (intervalsOrderByStart[i].start < intervalsOrderByEnd[end].end) {
rooms++;
} else {
end++;
}
}
return rooms;
};