这道题设计思路上还是很简单的,参见其他题解就能快速理解。本人在解此题时反而是卡在了理解题意上,和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;
}
};

京公网安备 11010502036488号