原题链接:
https://leetcode.cn/problems/time-needed-to-buy-tickets/
解题思路:
- 如果是k和他之前的人
- 如果买票数量比k少,肯定全部买完,及
tickets[i]
- 如果买票数量比k大,最多只能买
tickets[k]
张
- 如果买票数量比k少,肯定全部买完,及
- 如果是k之后的人
- 如果买票数量比k少,只能买到
tickets[i]
张 - 如果买票数量比k大,最多只能买
tickets[k] - 1
张
- 如果买票数量比k少,只能买到
/**
* @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
};