华为OD机试 - 特异性双端队列(Java 2023 B卷 100分)

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、Java算法源码
    • 五、效果展示
      • 1、输入
      • 2、输出

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

一、题目描述

给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据。

输入一个数字n,会依次添加数字1~n(也就是添加n次)。

但是在添加数据的过程中,也会删除数据,要求删除必须按照1~n按照顺序进行删除,所以在删除时,可以根据需要调整队列中数字的顺序以满足删除条件。

二、输入描述

第一行一个数据N,表示数据的范围。

接下来的2N行是添加和删除语句。

其中:

  1. head add x 表示从头部添加元素 x;
  2. tail add 表示从尾部添加元素;
  3. 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机试 - 特异性双端队列(Java 2023 B卷 100分)_第1张图片


下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

本文收录于,华为OD机试(JAVA)真题(A卷+B卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

你可能感兴趣的:(搬砖工逆袭Java架构师,华为od,java,算法)