LeetCode题解:2073. 买票需要的时间,直接计算,JavaScript,详细注释

11 阅读1分钟

原题链接: leetcode.cn/problems/ti…

解题思路:

  1. 如果是k和他之前的人
    • 如果买票数量比k少,肯定全部买完,及tickets[i]
    • 如果买票数量比k大,最多只能买tickets[k]
  2. 如果是k之后的人
    • 如果买票数量比k少,只能买到tickets[i]
    • 如果买票数量比k大,最多只能买tickets[k] - 1
/**
 * @param {number[]} tickets
 * @param {number} k
 * @return {number}
 */
var timeRequiredToBuy = function(tickets, k) {
  let result = 0 // 存储购票所需时间

  for (let i = 0; i < tickets.length; i++) {
    if (i <= k) {
      // 如果是k和他之前的人
      // 如果买票数量比k少,肯定全部买完,及tickets[i]
      // 如果买票数量比k大,最多只能买tickets[k]张
      result += Math.min(tickets[i], tickets[k])
    } else {
      // 如果是k之后的人
      // 如果买票数量比k少,只能买到tickets[i]张
      // 如果买票数量比k大,最多只能买tickets[k] - 1张
      result += Math.min(tickets[i], tickets[k] - 1)
    }
  }

  return result
};