Acwing---829. 模拟队列

模拟队列

  • 1.题目
  • 2.基本思想
  • 3.代码实现

1.题目

实现一个队列,队列初始为空,支持四种操作:

  1. push x – 向队尾插入一个数 x;
  2. pop – 从队头弹出一个数;
  3. empty – 判断队列是否为空;
  4. query – 查询队头元素。

现在要对队列进行 M M M 个操作,其中的每个操作 3 3 3 和操作 4 4 4 都要输出相应的结果。

输入格式
第一行包含整数 M M M,表示操作次数。

接下来 M M M 行,每行包含一个操作命令,操作命令为 push xpopemptyquery 中的一种。

输出格式
对于每个 emptyquery 操作都要输出一个查询结果,每个结果占一行。

其中,empty 操作的查询结果为 YESNOquery 操作的查询结果为一个整数,表示队头元素的值。

数据范围
1 ≤ M ≤ 100000 , 1≤M≤100000, 1M100000,

1 ≤ x ≤ 109 , 1≤x≤109, 1x109,

所有操作保证合法。 所有操作保证合法。 所有操作保证合法。

输入样例:

10
push 6
empty
query
pop
empty
push 3
push 4
pop
query
push 6

输出样例:

NO
6
YES
4

2.基本思想

用一个数组 q 保存数据。

hh 代表队头,q[hh] 就是队头元素, q[hh + 1] 就是第二个元素。

tt代表队尾, q[tt] 就是队尾元素, q[tt + 1] 就是下一次入队,元素应该放的位置。

[hh, tt] 左闭右闭,代表队列中元素所在的区间。

出队pop:因为 hh 代表队头,[hh, tt] 代表元素所在区间。所以出队可以用 hh++实现,hh++后,区间变为[hh + 1, tt]

入队push:因为 tt 代表队尾,[hh, tt] 代表元素所在区间。所以入出队可以用 tt++实现,tt++后,区间变为[hh, tt + 1], 然后在q[tt+1]位置放入入队元素。

是否为空empty:[hh, tt] 代表元素所在区间,当区间非空的时候,对列非空。也就是tt >= hh的时候,对列非空。

询问队头query:用 hh 代表队头,q[hh] 就是队头元素,返回 q[hh] 即可。

在这里插入图片描述

3.代码实现

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static int N = 100010;static int[] q = new int[N];static int hh, tt = -1;//分别表示 对头0  队尾-1public static void main(String[] args) throws IOException {int m = Integer.parseInt(br.readLine());while (m-- > 0) {String[] s = br.readLine().split(" ");String opt = s[0];if (opt.equals("push")) {int x = Integer.parseInt(s[1]);q[++tt] = x;} else if (opt.equals("pop")) {hh++;} else if (opt.equals("empty")) {System.out.println(tt >= hh ? "NO" : "YES");} else if (opt.equals("query")) {System.out.println(q[hh]);}}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/453094.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习中的有监督学习和无监督学习

有监督学习 简单来说,就是人教会计算机学会做一件事。 给算法一个数据集,其中数据集中包含了正确答案,根据这个数据集,可以对额外的数据希望得到一个正确判断(详见下面的例子) 回归问题 例如现在有一个…

蓝桥杯刷题day06——平均

1、题目描述 有一个长度为n 的数组(n 是 10 的倍数),每个数ai都是区间 [0,9] 中的整数。 小明发现数组里每种数出现的次数不太平均,而更改第i 个数的代价为bi, 他想更改若干个数的值使得这10 种数出现的次数相等&…

八. 实战:CUDA-BEVFusion部署分析-学习spconv的优化方案(Implicit GEMM conv)

目录 前言0. 简述1. 什么是Implicit GEMM Conv2. Explicit GEMM Conv3. Implicit GEMM Conv4. Implicit GEMM Conv优化5. spconv和Implicit GEMM Conv总结下载链接参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》,链接。记录下个人学习笔记&#xff0…

国辰智企APS自动化排产平台:实现生产计划与其他系统无缝协同

在当今竞争激烈的制造环境中,有效的生产计划和排程对于企业的成功至关重要。APS生产计划排程平台作为一种先进的工具,正越来越受到企业的关注和应用。那么,APS生产计划排程平台有哪些类型呢?本文将为您详细介绍。 1.基于规则的APS…

Elastic 因其人工智能辅助可观察性而荣获 2024 年 EMA Allstars 奖

作者:来自 Elastic Gagan Singh 我们很高兴获得 2024 年 EMA 全明星奖。 该奖项认可了 Elastic 专注于提供全栈可观测性解决方案,该解决方案为复杂的混合云部署提供统一的可见性和人工智能驱动的见解。 EMA Allstars 奖旨在表彰重塑企业技术格局的开拓者…

虚幻5源码版打包服务端

适用情况,windows系统,已经安装vs2022之类的,和UE5适配的版本 源码版使用 1.下载源码版,推荐下载 压缩包 tar.gz那个,zip和git clone我老是下载不下载来,只是这个压缩包要解压1个多小时… 2.点击 源码的…

机器学习系列——(九)决策树

简介 决策树作为机器学习的一种经典算法,在数据挖掘、分类和回归等任务中广泛应用。本文将详细介绍机器学习中的决策树算法,包括其原理、构建过程和应用场景。 原理 决策树是一种基于树状结构的监督学习算法,它通过构建一棵树来对数据进行分…

【Redis】字符串原理--简单动态字符串SDS

一.SDS定义 free 属性值为0,标识SDS没有分配任何未使用空间。len 属性值为5,标识SDS保存了一个5字节长度的字符串。buf 属性是一个char类型数组,数组的前5个字节保存了,R e d i s 五个字符,最后一个保存空字符串 \0…

阿里计算巢:开启数据集市场的宝库,助力AI研究和应用

阿里计算巢 阿里数据巢提供了一个丰富的数据集市场,官方地址: https://computenest.console.aliyun.com/dataset/service/cn-hangzhou 可以看到数据集内容涵盖了多个领域,且还在不断增加中。关键是免费!且支持下载到本地。 以下…

泡泡清新文艺的微社区系统PHP源码

泡泡微社区,小巧而强大,为您带来卓越的社区交流体验。 凭借GoZinc的先进架构,泡泡在保持轻盈身姿的同时,功能一应俱全。前端采用Vue3匠心打造,界面清新简约,三栏式布局仿若Twitter,让您一见倾心…

(6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理

目录 一、为什么要使用Adaboost建模? 二、泰坦尼克号分析(工作环境) (插曲)Python可以引入任何图形及图形可视化工具 三、数据分析 四、模型建立 1、RandomForestRegressor预测年龄 2、LogisticRegression建模 引入GridSearchCV 引入RandomizedSearchCV 3、Deci…

PyTorch 2.2 中文官方教程(一)

PyTorch 秘籍 PyTorch 秘籍 原文:pytorch.org/tutorials/recipes/recipes_index.html 译者:飞龙 协议:CC BY-NC-SA 4.0 秘籍是关于如何使用特定 PyTorch 功能的简短、可操作的示例,与我们的全长教程不同。 PyTorch 原型示例 原文…