首页 > 其他 > 详细

1235. Maximum Profit in Job Scheduling

时间:2021-06-21 11:50:03      阅读:19      评论:0      收藏:0      [点我收藏+]

We have n jobs, where every job is scheduled to be done from startTime[i] to endTime[i], obtaining a profit of profit[i].

You‘re given the startTime, endTime and profit arrays, return the maximum profit you can take such that there are no two jobs in the subset with overlapping time range.

If you choose a job that ends at time X you will be able to start another job that starts at time X.

 

Example 1:

技术分享图片

Input: startTime = [1,2,3,3], endTime = [3,4,5,6], profit = [50,10,40,70]
Output: 120
Explanation: The subset chosen is the first and fourth job. 
Time range [1-3]+[3-6] , we get profit of 120 = 50 + 70.

Example 2:

技术分享图片

Input: startTime = [1,2,3,4,6], endTime = [3,5,10,6,9], profit = [20,20,100,70,60]
Output: 150
Explanation: The subset chosen is the first, fourth and fifth job. 
Profit obtained 150 = 20 + 70 + 60.

Example 3:

技术分享图片

Input: startTime = [1,1,1], endTime = [2,3,4], profit = [5,6,4]
Output: 6

 1 class Solution {
 2     public int jobScheduling(int[] startTime, int[] endTime, int[] profit) {
 3         int n = startTime.length;
 4         int[][] jobs = new int[n][3];
 5         for (int i = 0; i < n; i++) {
 6             jobs[i] = new int[] { startTime[i], endTime[i], profit[i] };
 7         }
 8         Arrays.sort(jobs, (a, b) -> a[1] - b[1]);
 9         TreeMap<Integer, Integer> dp = new TreeMap<>();
10         dp.put(0, 0);
11         for (int[] job : jobs) {
12             int cur = dp.floorEntry(job[0]).getValue() + job[2];
13             if (cur > dp.lastEntry().getValue())
14                 dp.put(job[1], cur);
15         }
16         return dp.lastEntry().getValue();
17     }
18 }

 

1235. Maximum Profit in Job Scheduling

原文:https://www.cnblogs.com/beiyeqingteng/p/14911099.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!