题目:清除数组的最小花费大佬们,帮忙看下,这个代码的思路有什么问题呢,测试用例过了,但是提交上去后只过了15%。public static void main(String[] args) {Scanner in = new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextInt()) { // 注意 while 处理多个 caseint count = in.nextInt();ArrayList<Integer> arrayList = new ArrayList<>();for (int i = 0; i < count; i++) {int n = in.nextInt();int k = in.nextInt();int x = in.nextInt();HashMap<Integer, Integer> map = new HashMap<>();ArrayList<Integer> list = new ArrayList<>();for (int j = 0; j < n; j++) {int num = in.nextInt();map.merge(num, 1, Integer::sum);list.add(num);}int min = getFirstMinNum(map);int minRes = Math.min(n * x, k * min);for (int j = 0; j < list.size(); j++) {if (list.get(j) < min) {assert map.containsKey(list.get(j));if (map.get(list.get(j)) == 1) {min = list.get(j);map.remove(list.get(j));} else {Integer v = map.get(list.get(j));map.put(list.get(j), v - 1);}}int tempRes = k * min + x * (j + 1);if (tempRes < minRes) {minRes = tempRes;}}arrayList.add(minRes);}in.nextLine();arrayList.forEach(System.out::println);}}private static int getFirstMinNum(HashMap<Integer, Integer> map) {int i = 0;for (; i<= 200000; i++) {if (!map.containsKey(i)) {return i;}}return i;}