2022.3.20米哈游 云游戏
题型一:单选10道
题型二:不定项选择15道
题型三:编程题3道
捡圣遗物
思路,使用队列,圣遗物放进队列,队列不为空输出圣遗物,为空输出"no reliquaries."import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int q = sc.nextInt(); int i = 0; Queue<Integer> deque = new LinkedList<>(); while (i<q){ int p = sc.nextInt(); if (p == 1){ deque.add(sc.nextInt()); deque.add(sc.nextInt()); }else { if (deque.isEmpty()){ System.out.println("no reliquaries."); }else { System.out.print(deque.poll()+" " +deque.poll()); } } i++; } } }
两个排列左移最少步骤,可以一样
思路:直接暴力查找,从p2中找到与p1的首元素相等的值,然后判断以此为起点,两个队列相不相等,如果相等,去元素下标i和长度n-i中最小的import java.util.Scanner; public class Main2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int t = sc.nextInt(); for (int j = 0; j < t ; j++) { int n = sc.nextInt(); int[] p1 = new int[n]; int[] p2 = new int[n]; for (int i = 0; i < n; i++) { p1[i] = sc.nextInt(); } for (int i = 0; i < n; i++) { p2[i] = sc.nextInt(); } System.out.println(move(p1,p2)); } } private static int move(int[] p1, int[] p2) { int n = p1.length; for (int i = 0; i < n; i++) { int p1index = 0; if (p2[i] == p1[p1index]){ int p2index = i; int count = 0; while (p1[p1index++] == p2[(p2index++)%n]){ count++; if (count==n){ return Math.min(i,n-i); } } } } return 0; } }
删除叶子节点,最少删除几个,可以使直径小于给定值
没思路,不会