成都网站建设服务公司,移动app开发技术,app和小程序的开发成本,学做网站 软件文章目录1. 题目2. 解题1. 题目
给你一个非负整数数组 nums 和一个整数 k 。每次操作#xff0c;你可以选择 nums 中 任一 元素并将它 增加 1 。
请你返回 至多 k 次操作后#xff0c;能得到的 nums的 最大乘积 。由于答案可能很大#xff0c;请你将答案对 10^9 7 取余后…
文章目录1. 题目2. 解题1. 题目
给你一个非负整数数组 nums 和一个整数 k 。每次操作你可以选择 nums 中 任一 元素并将它 增加 1 。
请你返回 至多 k 次操作后能得到的 nums的 最大乘积 。由于答案可能很大请你将答案对 10^9 7 取余后返回。
示例 1
输入nums [0,4], k 5
输出20
解释将第一个数增加 5 次。
得到 nums [5, 4] 乘积为 5 * 4 20 。
可以证明 20 是能得到的最大乘积所以我们返回 20 。
存在其他增加 nums 的方法也能得到最大乘积。示例 2
输入nums [6,3,3,2], k 2
输出216
解释将第二个数增加 1 次将第四个数增加 1 次。
得到 nums [6, 4, 3, 3] 乘积为 6 * 4 * 3 * 3 216 。
可以证明 216 是能得到的最大乘积所以我们返回 216 。
存在其他增加 nums 的方法也能得到最大乘积。提示
1 nums.length, k 10^5
0 nums[i] 10^6来源力扣LeetCode 链接https://leetcode-cn.com/problems/maximum-product-after-k-increments 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
从最小的数开始增加1能获取最大的增长百分比每次都是对新的数组进行此操作采用优先队列小的优先取出堆顶的1再放回
class Solution {
public:int maximumProduct(vectorint nums, int k) {priority_queueint, vectorint, greaterint q;for(auto num : nums)q.push(num);while(k--){int num q.top();q.pop();q.push(num1);}int ans 1;while(!q.empty()){ans (1LL*ans*q.top())%1000000007;q.pop();}return ans;}
};440 ms 88.6 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步