网站ui案例,国外源代码网站,网站运营刚做时的工作内容,简单网站建设优化推广思路#xff1a;在最开始的情况下每人需要买的票数减一是能保持相对位置不变的#xff0c; 如果再想减一就有可能 有某些人只买一张票#xff0c;而离开了队伍#xff0c; 所有容易想到对于某个人如果比当前的人买的多就按当前的人数量算 因为在一次次减一的情况下#xf… 思路在最开始的情况下每人需要买的票数减一是能保持相对位置不变的 如果再想减一就有可能 有某些人只买一张票而离开了队伍 所有容易想到对于某个人如果比当前的人买的多就按当前的人数量算 因为在一次次减一的情况下当前的人已经离队了 如果比当前的人少则按其票数统计道理相同 对于当前的人前方的的人可以使用上述策略但对于后方由于当前的人有更高的优先而导致情况有所不同但如何操作呢 举个例子 2 6 3 1 2 4 对于排在n2的人 即需要买三张票的人 对于其前方的人使用上述策略 但如何操作后方呢—— 先模拟三次出票此时购票序列为1 2 4 1 5 2 此时便将后方转换为前方使用相同策略 归纳对于 n2这个人前方的人对 购票数继续处理后方的则是对购票数减一进行处理
代码:
int timeRequiredToBuy(vectorint tickets, int k) {int res 0, size tickets.size();for (int i 0; i size; i) {if (i k) {res tickets[i] tickets[k] ? tickets[k] : tickets[i];} else {res tickets[i] tickets[k] ? tickets[k] - 1 : tickets[i];}}return res;}