题目的意思类似于 :给你一个单行CPU和无限个打印机资源,告诉你若干个打印进程的CPU占用时间和打印时间,并且每个进程都是先使用完CPU再打印。求最少花费时间。
解题思想:
排序 贪心
题解:
class Solution {
/*
* 贪心:
* 1、种植的总时间是固定的,种不完,花也生长不完
* 2、所以要尽量让“露出的尾巴”短。(意思就是尽量让中化的时间短)
* */
public int earliestFullBloom(int[] plantTime, int[] growTime) {
int n = plantTime.length;
List<Integer> ids = new ArrayList<>();
for (int i =0;i<n;i++){
ids.add(i);
}
// 这里就是写了一个排序规则 降序排序
// 花的生长天数逆序排序 生长天数长的优先播种 ids记录了花生长天数的排序下标
Collections.sort(ids, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return growTime[o2]-growTime[o1];
}
});
int res =0;
int pt =-1;
for (int i:ids){
pt += plantTime[i];
int gt = pt+growTime[i]+1;
res = Math.max(res,gt);
}
return res;
}
}