力扣 1606. 找到处理最多请求的服务器(JavaScript 版)
这题在官方题解里面没有 JavaScript 版的,Python 版的也用了一些内容的高级方法,自己折腾了一番用 JS 写了个通过的版本,如下
var busiestServers = function (k, arrival, load) {
const servers = Array(k)
.fill(0)
.map((a, index) => {
return {
index,
task: 0,
time: 0,
}
})
let max = 0
for (let i = 0; i < arrival.length; i++) {
let next = 0
while (next < k) {
const serverIndex = (i + next) % k
const server = servers[serverIndex]
if (server.time <= arrival[i]) {
const task = (server.task += 1)
server.time = arrival[i] + load[i]
if (task > max) {
max = task
}
break
} else {
next += 1
}
}
}
// const max = Math.max(...servers.map(({ task }) => task))
const result = []
servers.forEach(({ index, task }) => {
if (task === max) {
result.push(index)
}
})
return result
}
通过的结果
大家看到在代码快结束的地方,注释掉了一段代码 const max = Math.max(...servers.map(({ task }) => task))
,在倒数第二次提交的时候,这段代码没注释掉,就因为多了一次循环导致超时了,JS 的性能真的很“极限”。