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;
    }
}
相关推荐
liulilittle5 分钟前
回归物理本质:对拥塞控制实验室依赖与公平性误置的反思
网络·tcp/ip·计算机网络·算法·tcp·通信·拥塞控制
牛油果子哥q6 分钟前
unordered_set / unordered_map 底层哈希表精讲,哈希原理、哈希冲突、链地址法、源码结构、有序与无序容器终极选型全解
数据结构·算法·哈希算法·散列表
开开心心_Every8 分钟前
近200个工具的电脑故障修复合集
linux·运维·服务器·leetcode·智能手机·电脑·模拟退火算法
进击的荆棘10 分钟前
优选算法——优先级队列
数据结构·c++·算法·leetcode·优先级队列
wen_zhufeng10 分钟前
AudioX\-Turbo:面向通用音频生成的高效多模态统一框架
人工智能·算法·音视频
牛油果子哥q19 分钟前
哈希表经典刷题模型与布隆过滤器精讲,哈希查重、哈希计数、双哈希映射、误判原理与工业级落地应用
数据结构·算法·哈希算法·散列表
ruxshui19 分钟前
排序算法及不同场景应用总结
算法·排序算法
旖-旎27 分钟前
《LeetCode 200 FloodFill 岛屿数量DFS解法》
c++·算法·深度优先·力扣·floodfill
拂拉氏30 分钟前
【知识讲解-题目讲解】算法系列之动态规划入门(下)
算法·leetcode·动态规划
skywalk816333 分钟前
继续推进心语项目6.15 @CodeArts
开发语言·算法·编程