AcWing 829. 模拟队列
发布日期:2021-05-07 14:08:26 浏览次数:22 分类:原创文章

本文共 1824 字,大约阅读时间需要 6 分钟。

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


(1) “push x” – 向队尾插入一个数x;


(2) “pop” – 从队头弹出一个数;


(3) “empty” – 判断队列是否为空;


(4) “query” – 查询队头元素。


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


输入格式


第一行包含整数M,表示操作次数。


接下来M行,每行包含一个操作命令,操作命令为”push x”,”pop”,”empty”,”query”中的一种。


输出格式


对于每个”empty”和”query”操作都要输出一个查询结果,每个结果占一行。


其中,”empty”操作的查询结果为“YES”或“NO”,”query”操作的查询结果为一个整数,表示队头元素的值。


数据范围


1≤M≤1000001≤M≤100000,
1≤x≤1091≤x≤109,
所有操作保证合法。


输入样例:


10push 6emptyquerypopemptypush 3push 4popquerypush 6

输出样例:


NO6YES4

import java.io.*;import java.lang.Integer;class Main{    static int N = 100010;    static int[] que = new int[N];    static int hh = 0, tt = -1;        static void push(int x){        que[++tt] = x;    }        static void pop(){        if(!empty())            hh++;    }        static boolean empty(){        if(hh <= tt)return false;        return true;    }        static int query(){        if(!empty())return que[hh];        return -1;    }                public static void main(String[] args)throws Exception{        BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));        BufferedWriter buw = new BufferedWriter(new OutputStreamWriter(System.out));        int n = Integer.valueOf(buf.readLine());        for(int i = 0; i < n; ++i){            String[] params = buf.readLine().split(" ");            if("push".equals(params[0])){                int x = Integer.valueOf(params[1]);                push(x);            }else if("pop".equals(params[0])){                pop();            }else if("empty".equals(params[0])){                boolean res = empty();                if(res)buw.write("YES\n");                else buw.write("NO\n");            }else{                int res = query();                if(res > 0)buw.write(res + "\n");            }        }        buw.flush();        buf.close();        buw.close();    }}

 

上一篇:AcWing 830. 单调栈
下一篇:AcWing 828. 模拟栈

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2025年04月13日 01时20分44秒