
我们象牙哦保证乘积最大那么就要保证每个数的差是最小的所我们要使用PriorityQueue,PriorityQueue可以保证我们每次poll的都是最小的元素,我们只需要让每次最小的元素+1即可。
1 <= nums.length, k <= 10^50 <= nums[i] <= 10^6
这个题目给我们的范围比较大,如果我们使用int类型会出现越界问题,所以我们要使用long类型,当我们每次运算结果做res %= 1000000007 *** 作之后的值会变成int范围,所以我们在返回结果使用类型强制转换为int类型。
codeclass Solution {
public int maximumProduct(int[] nums, int k) {
PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();
for (int num : nums) {
priorityQueue.offer(num);
}
while (k-- > 0) {
int temp = priorityQueue.poll()+1;
priorityQueue.offer(temp);
}
long res = 1;
while (!priorityQueue.isEmpty()){
res *= priorityQueue.poll();
res %= 1000000007;
}
return (int)res;
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)