题目
给你一个非负整数数组 nums 和一个整数 k 。每次操作,你可以选择 nums 中 任一 元素并将它 增加 1 。
请你返回 至多 k 次操作后,能得到的 nums的 最大乘积 。由于答案可能很大,请你将答案对 109 + 7 取余后返回。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-product-after-k-increments
思路
贪心+优先队列
每次挑出最小的,然后增大它
木桶效应
代码
class Solution {
public:
int maximumProduct(vector<int>& nums, int k) {
priority_queue<int,vector<int>,greater<int>> q;
for(int num:nums)
q.push(num);
while(k){
int temp=q.top();
q.pop();
temp++;
q.push(temp);
k--;
}
long long ans=1;
int mod=1e9+7;
while(!q.empty()){
int temp=q.top();
q.pop();
ans=((ans%mod)*(temp%mod))%mod;
}
return ans;
}
};