2219左移右移
⭐️难度:中等
🌟考点:思维、链表、2022国赛
📖
📚
import java.math.BigInteger;
import java.util.Arrays;
import java.util.Scanner;public class Main {static int N = 200010;public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();int[] a = new int[N];int[] l = new int[N];int[] r = new int[N];for (int i = 1; i <= n; i++) {a[i] = i;l[i] = i - 1;r[i] = i + 1;}l[n + 1] = n; // 头尾节点特殊处理r[0] = 1;while(m-->0){String s = sc.next();int x = sc.nextInt();// 先删除结点r[l[x]] = r[x];l[r[x]] = l[x];if(s.equals("L")){// 再列为头结点l[r[0]] = x;l[x] = 0;r[x] = r[0];r[0] = x;}else{// 再列为尾结点r[l[n+1]] = x;r[x] = n + 1;l[x] = l[n + 1];l[n + 1] = x;}}for (int i = r[0]; i <= n; i = r[i]) {System.out.print(a[i] + " ");}}
}
🍎笔记
一步一步验证,不要着急,这种题目很容易想当然,因为一个细枝末节的错误就写不出来。