华为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);
}
}
浙公网安备 33010602011771号