力扣 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 的性能真的很“极限”。

posted @ 2022-03-31 08:59  尹宇星_Kim  阅读(28)  评论(0编辑  收藏  举报