华为OD【最小调整顺序次数】


import java.util.Collections;
import java.util.LinkedList;
import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        /*
5
head add 1
tail add 2
remove
head add 3
tail add 4
head add 5
remove
remove
remove
remove

5
head add 1
remove
head add 2
remove
head add 3
remove
head add 4
remove
head add 5
remove

6
head add 1
head add 2
remove
head add 3
head add 4
remove
head add 5
head add 6
remove
remove
remove
remove


         */
        Scanner scanner = new Scanner(System.in);
        Integer N = Integer.parseInt(scanner.nextLine());
        Integer next_del_num = 1;
        LinkedList<Integer> list = new LinkedList<>();
        int times = 0;
        while(scanner.hasNextLine()){
            String s = scanner.nextLine();
            if(s.startsWith("head add")){
                Integer num = Integer.parseInt(s.substring(9,10));
                list.addFirst(num);
            }else if(s.startsWith("tail add")){
                Integer num = Integer.parseInt(s.substring(9,10));
                list.addLast(num);
            }else{
                if(!list.getFirst().equals(next_del_num)){
                    Collections.sort(list);
                    times++;
                }
                list.removeFirst();
                next_del_num++;
                if(next_del_num > N){
                    break;
                }
            }
        }
        System.out.print(times);
    }
}
posted @ 2025-05-02 13:35  破忒头头  阅读(25)  评论(0)    收藏  举报