深圳网站备案拍照点,网站建设人员的安排,网站建设未来发展前景,网站开发和系统开发区别5926. 买票需要的时间
有 n 个人前来排队买票#xff0c;其中第 0 人站在队伍 最前方 #xff0c;第 (n - 1) 人站在队伍 最后方 。
给你一个下标从 0 开始的整数数组 tickets #xff0c;数组长度为 n #xff0c;其中第 i 人想要购买的票数为 tickets[i] 。
每个人买票…5926. 买票需要的时间
有 n 个人前来排队买票其中第 0 人站在队伍 最前方 第 (n - 1) 人站在队伍 最后方 。
给你一个下标从 0 开始的整数数组 tickets 数组长度为 n 其中第 i 人想要购买的票数为 tickets[i] 。
每个人买票都需要用掉 恰好 1 秒 。一个人 一次只能买一张票 如果需要购买更多票他必须走到 队尾 重新排队瞬间 发生不计时间。如果一个人没有剩下需要买的票那他将会 离开 队伍。
返回位于位置 k下标从 0 开始的人完成买票需要的时间以秒为单位。
示例 1
输入tickets [2,3,2], k 2 输出6 解释
第一轮队伍中的每个人都买到一张票队伍变为 [1, 2, 1] 。第二轮队伍中的每个都又都买到一张票队伍变为 [0, 1, 0] 。 位置 2 的人成功买到 2 张票用掉 3 3 6 秒。 示例 2
输入tickets [5,1,1,1], k 0 输出8 解释
第一轮队伍中的每个人都买到一张票队伍变为 [4, 0, 0, 0] 。接下来的 4 轮只有位置 0 的人在买票。 位置 0 的人成功买到 5 张票用掉 4 1 1 1 1 8 秒。
提示
n tickets.length1 n 1001 tickets[i] 1000 k n
解题思路
模拟每个人按照下标大小进行购票每个人买票都需要用掉 恰好 1 秒 并且一个人 一次只能买一张票因此每个人在每一轮购票中花费的时间是1s因此我们只需要统计当目标下标k减少为0时曾经有多少张票被卖出即可,就可以得出买票所需要的时间。
代码
class Solution {
public:int timeRequiredToBuy(vectorint tickets, int k) {int cnt(0);while (true){for (int i 0; i tickets.size(); i) {if (tickets[i]0){cnt;tickets[i]--;if(tickets[k]0)return cnt;}}}return cnt;}
};