题目来源
题目描述
题目解析
- 如果本次任务大于GPU最多一次执行的任务数量,那么就要将这次的任务交给下一次处理
- 举例二【5,4,1,1,1】来看:
- GPU一次只能处理4个任务,那么处理第一组任务就剩余了5-4=1个任务没有处理,将没有处理的任务记为more,然后进入下一组任务中
- 在下一组任务中,优先处理上一组任务没有处理完的任务,也就是说more
- 剩余为处理的任务我们可以通过move = 当前组的任务数量 + 上一次剩余未处理的任务more - GBU一次能处理的任务数两来记录
- 另外,即使当前组的任务数低于GOU一次能处理的任务数,也应该只处理当前组的任务,不提前进入下一任务组处理下一任务组的任务,题目是说GPU最多一次执行n个任务,个人理解为可以一次最多处理n,也可以处理不到n的任务数。
int process(std::vector<int> nums, int n){
int time = 0;
int more = 0;
for(auto j : nums){
if(j + more > n){
more = more + j - n;
}else{
more = 0;
}
time++;//每循环一次都需要计算耗时1秒
}
// 当任务组完成后还有剩余未完成的任务,需要继续将其完成。
while (more > 0){
more = more - n;
time++;
}
return time;
}