第二题用优先级队列 因为没有参加笔试 我是按照评论区的题目写的 public int process(int x , int n , int[] nums){ if (x<n){ return 0; } if (x==n){ return n*2; } PriorityQueue<Integer> heap = new PriorityQueue<>(); for (int num : nums) { heap.add(num); } while (heap.size()!=n){ int num = 0; while (heap.size()>=0&&num<heap.peek()){ if (heap.size()==n-1){ break; } num+=heap.poll(); } heap.add(num); } HashMap<Integer, Integer> map = new HashMap<>(); while (!heap.isEmpty()){ Integer poll = heap.poll(); map.put(poll,map.getOrDefault(poll,0)+1); } int ans = 0; for (Integer key : map.keySet()) { if (map.get(key)==1){ ans++; } } return n*2+ans; }