题意

给定一个数组代表一组任务,每个下标代表任务的id,里面的每一项都是一个长度为2的数组,分别表示一个任务的等待时间,以及处理任务需要的时间。只有一个CPU来处理这些任务,处理任务遵守的原则:

返回任务的处理顺序

思路

这道理要考虑使用堆,这题思路就是,先将任务按照任务的等待时间从小到大排列。

然后将到当前时间所有可以被cpu处理的任务放到heap中,heap的调整规则就是,如果任务处理时间相同,按照id来排列,否则就按照任务处理时间排列。然后让heap中的元素弹出,就是最终的处理顺序。

所以整体的逻辑就是

// 1. 任务根据等待时间排序

for 存在任务{
	// 挑选任务,放到heap中
	 pickTaskAndInsertIntoHeap()
	 // 记录任务的处理顺序
   recordTaskId();
}

这里继续对上述例子进行说明。