题解 | 队列消数

队列消数

https://www.nowcoder.com/practice/48f6e451ff52440798067b77dc5ea95b

#include <queue>
class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param tickets int整型vector
     * @param k int整型
     * @return int整型
     */
    int timeRequiredToBuy(vector<int>& tickets, int k) {
        queue<int> q;
        for (int s : tickets) q.push(s);

        // write code here
        int count = 0;
        int inital = tickets[k];
        // 关键确定什么时候tickets[k]需要减1,即当tickets[k]为队列首部元素时需要减1
        while (inital >= 1) {
            if (k == 0) {
                inital--;
                k = q.size() - 1;
            } else {
                k--;
            }

            if (q.front() > 1) {
                q.push(--q.front());
                q.pop();
            } else {
                q.pop();
            }

            count++;
        }

        return count;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务