这道题设计思路上还是很简单的,参见其他题解就能快速理解。本人在解此题时反而是卡在了理解题意上,和ai一起切磋也还是卡了有40分钟,最后发现原来是对于“取出”这个动词理解有误,本人原以为取出只需要读取队首的值即可,但是其实取出不仅要读出其值,还要将其弹出队列!!!若是按照只读取不弹出的理解,是不可能想出不使用队列而是使用for循环一次遍历得到总时间的思路的。因此本人认为“取出”这个动词乃是本题的关键理解点与突破口,理解正确其义方能明确题目所问为何物。

#include <queue>
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param tickets int整型vector 
     * @param k int整型 
     * @return int整型
     */
    int timeRequiredToBuy(vector<int>& tickets, int k) {
        // write code here
        int summ = 0;
        for (int i = 0; i < tickets.size(); i++) {
            if (i <= k) {
                if (tickets[i] >= tickets[k]) {
                    summ += tickets[k];
                }
                else {
                    summ += tickets[i];
                }
            }
            else {
                if (tickets[i] < tickets[k]) {
                    summ += tickets[i];
                }
                else {//tkt[i] >= tkt[k];
                    summ += tickets[k] -1;
                }
            }
        }
        return summ;
    }
};