-
Notifications
You must be signed in to change notification settings - Fork 481
/
Copy path1235.js
27 lines (26 loc) · 782 Bytes
/
1235.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
var jobScheduling = function(startTime, endTime, profit) {
let n = startTime.length, jobs = [];
for (let i = 0; i < n; i++) {
jobs.push([startTime[i], endTime[i], profit[i]]);
}
jobs.sort(function(a, b) {
return a[1] - b[1];
});
let dp = new Array(n); dp.fill(0);
dp[0] = jobs[0][2];
for (let i = 1; i < n; i++) {
let l = 0, r = i - 1;
while (l < r) {
let mid = (l + r) >> 1;
if (jobs[mid+1][1] <= jobs[i][0]) {
l = mid + 1
} else r = mid;
}
if (jobs[l][1] <= jobs[i][0]) {
dp[i] = Math.max(dp[i - 1], dp[l] + jobs[i][2]);
} else {
dp[i] = Math.max(dp[i - 1], jobs[i][2]);
}
}
return dp[n - 1];
};