小红想在 次操作之后,数组的最大值尽可能小。请你返回这个最大值。
import java.util.*; public class Solution { public int minMax (ArrayList<Integer> a, int k, int x) { //创建优先级队列,并使用Collections.reverseOrder()构造一个最大优先队列 PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder()); //调用addAll方法直接传入ArrayList集合 pq.addAll(a); return minMaxHelp(pq,k,x); } public int minMaxHelp(PriorityQueue<Integer> pq , int k ,int x) { //偷窥当前队列中的最大优先级数值 int peek = pq.peek(); int peek1 = peek - x; k--; //移除最大优先级数值 pq.remove(peek); //添加操作后的数值 pq.add(peek1); //操作次数为0就返回队列中最大优先级数值,否则就递归调用 if (k == 0) return pq.peek(); return minMaxHelp(pq,k,x); } }