
目录
- 专栏导读
 - 一、题目描述
 - 二、输入描述
 - 三、输出描述
 - 四、Java算法源码
 - 五、效果展示
 - 1、输入
 - 2、输出
 
华为OD机试 2023B卷题库疯狂收录中,刷题点这里
专栏导读
本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述
给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据。
输入一个数字n,会依次添加数字1~n(也就是添加n次)。
但是在添加数据的过程中,也会删除数据,要求删除必须按照1~n按照顺序进行删除,所以在删除时,可以根据需要调整队列中数字的顺序以满足删除条件。
二、输入描述
第一行一个数据N,表示数据的范围。
接下来的2N行是添加和删除语句。
其中:
- head add x 表示从头部添加元素 x;
 - tail add 表示从尾部添加元素;
 - remove表示删除元素。
 
三、输出描述
输出一个数字,表示最小的调整顺序次数。
四、Java算法源码
package com.guor.od;
import java.util.*;
public class OdTest {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 数据的范围
        int n = Integer.parseInt(sc.nextLine());
        // 接下来的2N行是添加和删除语句
        String[] arr = new String[n * 2];
        for (int i = 0; i < arr.length; ++i) {
            arr[i] = sc.nextLine();
        }
        /**
         * 1. head add x 表示从头部添加元素 x;
         * 2. tail add 表示从尾部添加元素;
         * 3. remove表示删除元素。
         */
        int count = 0;
        int input = 0;
        int output = 0;
        LinkedList<Integer> linkedList = new LinkedList<>();
        for (String command : arr) {
            String com = command.split(" ")[0];
            switch (com) {
                case "head":// 表示从头部添加元素 x;
                    linkedList.addFirst(++input);
                    break;
                case "tail":// 表示从尾部添加元素;
                    linkedList.addLast(++input);
                    break;
                default:// 表示删除元素。
                    if (!linkedList.getFirst().equals(++output)) {
                        count++;
                        linkedList.sort(Integer::compareTo);
                    }
                    linkedList.removeFirst();
                    break;
            }
        }
        System.out.print(count);
    }
}
 
五、效果展示
1、输入
4
 head add nezha
 remove
 tail add study
 head add java
 remove
 remove
 head add nezha
 head add java
2、输出
1

🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)
🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。




















