https://leetcode-cn.com/problems/maximum-product-after-k-increments/
将一个数x加一,对总乘积的影响:总乘积增加了 1*(x以外所有数的乘积)。
为了每次加一都使总乘积最大,要让 x以外所有数的乘积 最大,那么x选取最小的数。使用堆,保证每次取的x最小。
class Solution {
public int maximumProduct(int[] nums, int k) {
PriorityQueue<Integer> queue=new PriorityQueue<>();
for(int num:nums){
queue.offer(num);
}
for(int i=0;i<k;i++){
int min=queue.poll();
min++;
queue.offer(min);
}
long res=1;
while(!queue.isEmpty()){
res=(res*queue.poll())%(1000000007);
}
return (int)res;
}
}