leetcode 2073.买票需要的时间

思路:用队列进行模拟。

这道题其实也就是一道模拟题而已,有一些小细节需要注意一下。

第一,就是我们的队列到底存的是什么东西,这里我存放的是数组的下标,用下标来表示这个下标的数。当然,我们在进行-1操作的时候是对于原数组进行操作的,而不能另外开一个内存进行加减。

第二:就是队列本身的问题,队列本身我们需要让它不为零,因为有可能出现全部都变成0而移走的可能性,所以需要判断一下。

还有就是标记数组,有点小题大用了,额外多开了一个数组长度的标志数组。方法比较笨。

最后返回的时候,我们是在判断完它减完之后退出队列,所以我们在返回的时候需要额外的+1.

复制代码
class Solution {
    public int timeRequiredToBuy(int[] tickets, int k) {
        if(tickets.length<=0)
        return 0;
        Deque<Integer>q=new LinkedList<>();
        boolean []flag=new boolean[tickets.length];
        flag[k]=true;
        int cnt=0;
        for(int i=0;i<tickets.length;i++){
            q.addLast(i);
        }
        while(!q.isEmpty()){
            int tmp=q.getFirst();
            if(flag[tmp]&&tickets[tmp]-1==0){
                break;
            }
            tickets[tmp]--;
            cnt++;
            q.removeFirst();
            if(tickets[tmp]!=0){
            q.addLast(tmp);
            }
        }
        return cnt+1;
    }
}
相关推荐
mmmmath_33 分钟前
面试题 02.07. 链表相交
算法·链表
圣保罗的大教堂15 分钟前
leetcode 3903. 最小稳定下标 I 简单
leetcode
residual_fan38 分钟前
特征级SMOTE(Feature-level SMOTE)论文分享
人工智能·算法·数据挖掘·数据分析
xxwxx__39 分钟前
深入理解 C++ STL:stack、queue 与 deque 从使用到底层实现全解析
开发语言·c++·算法
sylviiiiiia1 小时前
Leetcode hot100 多数元素/相交链表/反转链表
算法·leetcode·链表
CoderYanger1 小时前
A.每日一题:3622. 判断整除性
java·程序人生·算法·leetcode·面试·职场和发展·蓝桥杯
rannn_1111 小时前
【力扣hot100】动态规划专题|70、118、198、279、322、139、300、152、416、32
算法·leetcode·动态规划
渡之1 小时前
ArduPilot(APM)滤波器之 HarmonicNotchFilter 深度解析
算法·无人机
我不会起名字3221 小时前
一天一道算法题(26):栈的简单应用
java·数据结构·python·算法·leetcode·golang·
lvwangshu2 小时前
exBSGS 算法
数学·算法