1723. 完成所有工作的最短时间
链接:
https://leetcode-cn.com/problems/find-minimum-time-to-finish-all-jobs/solution/javahui-su-jian-zhi-by-oyzg-409h/
class Solution {
private int minId = Integer.MAX_VALUE;
public int minimumTimeRequired(int[] jobs, int k) {
backTracking(jobs, new int[k], 0, 0);
return minId;
}
public void backTracking(int[] jobs, int[] times, int m, int minTime) {
if(m == jobs.length) {
minId = Math.min(minId, minTime);
return ;
}
boolean flag = true;
for(int i = 0; i < times.length; i++) {
if(times[i] == 0) {
if(!flag) return;
flag = false;
}
times[i] += jobs[m];
int tmpMax = Math.max(minTime, times[i]);
if(tmpMax <= minId) {
backTracking(jobs, times, m+1, tmpMax);
}
times[i] -= jobs[m];
}
}
}