2187. Minimum Time to Complete Trips

26 年 2 月 26 日 星期四
193 字
1 分钟
Screenshot 2026-02-26 at 10.33.46 pm

能否在n躺内完成至少totalTrips趟:

js
let trips = 0
for (const x of time) {
  trips += Math.floor(n / x)
  if (trips >= totalTrips) return true
}
return false
js
/**
 * @param {number[]} time
 * @param {number} totalTrips
 * @return {number}
 */

const check = (n, time, totalTrips) => {
  // for 循环好一点
  let trips = 0
  for (const x of time) {
    trips += Math.floor(n / x)
    if (trips >= totalTrips) return true
  }
  return false
  // return time.reduce((acc, cur) => acc + Math.floor(n / cur), 0) >= totalTrips
}
var minimumTime = function (time, totalTrips) {
  const max = Math.max(...time)
  const minT = Math.min(...time)
  // let right = max * Math.ceil(totalTrips / time.length);
  let right = minT * totalTrips // 循环不变量:check(right) 恒为 true
  let left = Math.min(...time) - 1 // 最小 - 1 永远为false
  while (left < right) {
    const mid = Math.floor((left + right) / 2)
    if (check(mid, time, totalTrips)) {
      right = mid
    } else {
      left = mid + 1
    }
  }
  return right
}

文章标题:2187. Minimum Time to Complete Trips

文章作者:Sirui Chen

文章链接:https://blog.siruichen.me/posts/2187_minimum_time_to_complete_trips[复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。