题解 | #【模板】队列#

【模板】队列

http://www.nowcoder.com/practice/afe812c80ad946f4b292a26dd13ba549

思路:

在本题中,我们使用 ArrayList 结构存放数据,而不直接使用 int[] 结构存放数据,主要是因为后者 初始化 要开辟很大的 内存空间,不然后续如果加入 太多 的数据,存不下 了怎么办。与此同时,我们还要维护一个 指针,它永远指向当前的 队头

  1. push 操作,没啥好说的,直接调用 add 方法即可。
  2. pop 操作,需要返回 当前指针 指向位置的元素。同时,指针 向后移动一位
  3. front 操作和 pop 操作类似,区别在于,不需要 移动指针的位置。
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = Integer.valueOf(scan.nextLine().trim());
        ArrayList<String> ans = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String[] operator = scan.nextLine().split(" ");
            if ("push".equals(operator[0])) {
                push(operator[1]);
            } else if ("pop".equals(operator[0])) {
                ans.add(pop());
            } else {
                ans.add(front());
            }
        }
        for (String str : ans) {
            System.out.println(str);
        }
    }
    public static ArrayList<String> arr = new ArrayList<>();
    public static int index = 0;
    public static void push(String num) {
        arr.add(num);
    }
    public static String pop() {
        return index == arr.size() ? "error" : arr.get(index++);
    }
    public static String front() {
        return index == arr.size() ? "error" : arr.get(index);
    }
}
全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞 回复 分享
发布于 2022-04-20 17:07
两个ArrayList复杂了,一个ArrayList就可以了,队首的话用index = 0就可以指定队首。 public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = Integer.parseInt(in.nextLine().trim()); ArrayList<string> arr = new ArrayList<>(); int index = 0; for (int i = 0; i < n; i++) { String[] s = in.nextLine().split(" "); if ("push".equals(s[0])){ arr.add(s[1]); } else if ("pop".equals(s[0])) { if (arr.isEmpty()){ System.out.println("error"); continue; } System.out.println(arr.remove(index)); } else if ("front".equals(s[0])) { if (arr.isEmpty()){ System.out.println("error"); continue; } System.out.println(arr.get(index)); } } }</string>
点赞 回复 分享
发布于 07-14 00:07 江苏

相关推荐

11-24 19:04
已编辑
湖南工商大学 Java
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务