『牛客|每日一题』模板队列

简介: 基础算法无论在研究生面试还是求职面试都是十分重要的一环,这里推荐一款算法面试神器:牛客网-面试神器;算法题只有多刷勤刷才能保持思路与手感,大家赶紧行动起来吧(温馨提示:常见的面试问答题库也很nice哦 https://www.nowcoder.com/link/pc_csdncpt_ll_sf


1.每日一题

原题链接:戳我戳我

网络异常,图片无法展示
|

2.测试案例

6

push1

pop

front

push2

push3

pop

1

error

2

3.Queue类实现

用Java自带的队列实现,代码如下,只需要做输入获取的处理与三种操作的判断即可,剩下的事情就是调用对应的类方法

Modifier_and_Type Method and Description
boolean add(E e) 将指定的元素插入到此队列中,如果可以立即执行此操作,而不会违反容量限制, true在成功后返回 IllegalStateException如果当前没有可用空间,则抛出IllegalStateException。
E element() 检索,但不删除,这个队列的头。
boolean offer(E e) 如果在不违反容量限制的情况下立即执行,则将指定的元素插入到此队列中。
E peek() 检索但不删除此队列的头,如果此队列为空,则返回 null
E poll() 检索并删除此队列的头,如果此队列为空,则返回 null
E remove() 检索并删除此队列的头。

importjava.util.*;

publicclassMain{

   publicstaticvoidmain(Stringargs[]){

       Queue<Integer>q=newLinkedList<Integer>();

       Scannerin=newScanner(System.in);

       intn=in.nextInt();

       in.nextLine();

       intnum;

       String[] strs;

       while(n--!=0){

           strs=in.nextLine().split(" ");

           //入队

           if(strs[0].equals("push")){

               q.add(Integer.parseInt(strs[1]));

           }elseif(strs[0].equals("pop")){

           //队不空,队首出列

               if(!q.isEmpty()){

                   System.out.println(q.poll());

               }else{

                   System.out.println("error");

               }

           }elseif(strs[0].equals("front")){

           //队不空,输出队首

               if(!q.isEmpty()){

                   System.out.println(q.peek());

               }else{

                   System.out.println("error");

               }

           }

       }

   }  

}

4.数组实现队列

importjava.util.*;

publicclassMain {

   publicstaticvoidmain(String[] args) {

       // TODO Auto-generated method stub

       Scannerscan=newScanner(System.in);

       intn=Integer.parseInt(scan.nextLine()) ;

       MyQueueq=newMyQueue(n+1);

       while(scan.hasNextLine()) {

           Stringstr=scan.nextLine() ;

           Stringarr[] =str.split(" ") ;

           if(arr[0].equals("push")) {

               q.push(Integer.parseInt(arr[1])) ;

           } elseif(arr[0].equals("pop")) {

               q.pop() ;

           } else {

               q.front() ;

           }

       }

   }

}

classMyQueue{

   int []arr;//用数组实现队列

   intmaxSize;//队列的大小

   intfront;//指示队列首下标

   intrear;//指示队尾下标

   publicMyQueue(intmaxSize){

       this.maxSize=maxSize;

       arr=newint[maxSize];

       front=-1;

       rear=-1;

   }

   //添加数据

   publicvoidpush(intval){

       //如果队列满了

       if(rear==maxSize){

           System.out.println("error");

       }else{

           //添加在队列尾部

           rear++;

           arr[rear]=val;

       }

   }

   //查看头部数据

   publicvoidfront(){

       if(isEmpty()){

           System.out.println("error");

       }else{

           System.out.println(arr[front+1]);

       }

   }

   

   //取出头部数据

   publicvoidpop(){

       if(isEmpty()){

           System.out.println("error");

       }else{

           front++;

           System.out.println(arr[front]);

       }

   }

   

   //判断队列空

   publicbooleanisEmpty(){

       if(rear==front){

           returntrue;

       }

       returnfalse;

   }

}

 

相关文章
|
1月前
|
机器人
[leedcode]刷题有感--动态规划入门及思路模板
[leedcode]刷题有感--动态规划入门及思路模板
|
1月前
|
存储 缓存 算法
【数据结构与算法-初学者指南】【附带力扣原题】队列
【数据结构与算法-初学者指南】【附带力扣原题】队列
|
11月前
|
Cloud Native
【刷题日记】641. 设计循环双端队列
【刷题日记】641. 设计循环双端队列
|
7月前
|
算法 安全 Java
代码随想录算法训练营第十天 | LeetCode 232.用栈实现队列、LeetCode 225. 用队列实现栈
代码随想录算法训练营第十天 | LeetCode 232.用栈实现队列、LeetCode 225. 用队列实现栈
48 0
|
7月前
|
存储 算法
代码随想录算法训练营第三天 | LeetCode 203. 移除链表元素、707. 设计链表、206. 反转链表
代码随想录算法训练营第三天 | LeetCode 203. 移除链表元素、707. 设计链表、206. 反转链表
88 0
|
10月前
|
存储
代码随想录训练营 Day03- 链表(上)
代码随想录训练营 Day03- 链表(上)
53 0
|
10月前
代码随想录训练营 Day04 - 链表(下)
代码随想录训练营 Day04 - 链表(下)
35 0
|
11月前
|
算法 Cloud Native
【刷题日记】622. 设计循环队列
【刷题日记】622. 设计循环队列
|
算法
代码随想录算法训练营第十一天 | LeetCode1047——栈
代码随想录算法训练营第十一天 | LeetCode1047——栈
69 0
|
算法 C++
代码随想录算法训练营第三,四天 | 链表专题
代码随想录算法训练营第三,四天 | 链表专题
72 0