面试题:编写程序,输入打印队列,按优先级输出实际打印顺序
某个打印机根据打印队列执行打印任务,打印任务有9个优先级,用1-9表示,数字越大优先级越高,打印机每次从列队头部取出第一个任务A,然后检查队列余下任务中有没有比A优先级更高的任务,若有,则将任务A放回列队尾部,否则执行A的打印,请编写程序,根据输入打印队列,输出实际打印顺序。
输入描述:
输入一行,为每个任务优先级,优先级之间用逗号隔开
输出描述:
输出每个任务打印顺序,从0开始,用逗号隔开
示例:
输入:
9,3,5
输出:
0,2,1
输入:
1,2,2
输出:s
2,0,1
解答:
function printPrinter(str) {
let arr = str.split(",");
let arr2 = [...arr];
arr2.sort((a, b) => {
if (a === b) {
return 0;
}
return a > b ? -1 : 1;
}); // 注意
let indexArr = [];
let lastIndex = 0;
for (let i = 0, len = arr.length; i < len; i++) {
let index = arr2.indexOf(arr[i]);
indexArr[i] = index;
arr2[index] = undefined; // 注意
}
console.log(indexArr.join());
}