文章目录

  • 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(vector<int>& nums, int k) {priority_queue<int, vector<int>, greater<int>> q;for(auto num : nums)q.push(num);while(k--){int num = q.top();q.pop();q.push(num+1);}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阿明),一起加油、一起学习进步!

LeetCode 6039. K 次增加后的最大乘积(优先队列)相关推荐

  1. LeetCode 2202. K 次操作后最大化顶端元素

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums ,它表示一个 栈 ,其中 nums[0] 是栈顶的元素. 每一次操作中,你可以执行以下操作 之一 : 如果栈 ...

  2. LeetCode 1191. K 次串联后最大子数组之和(前缀和+分类讨论)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 arr 和一个整数 k. 首先,我们要对该数组进行修改,即把原数组 arr 重复 k 次. 举个例子,如果 arr = [1, 2] 且 ...

  3. leetcode - 1191. K 次串联后最大子数组之和

    给你一个整数数组 arr 和一个整数 k. 首先,我们要对该数组进行修改,即把原数组 arr 重复 k 次. 举个例子,如果 arr = [1, 2] 且 k = 3,那么修改后的数组就是 [1, 2 ...

  4. LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个非空的字符串 s 和一个整数 k,你要将这个字符串中的字母进行重新排列,使得重排后的字符串中相同字母的位置间隔距离至少为 k. 所有输入的字符串都 ...

  5. 漫画:删去k个数字后的最小值

    转载自  漫画:删去k个数字后的最小值 我们来举一个栗子: 给定整数 541270936,要求删去一个数,让剩下的整数尽可能小. 此时,无论删除哪一个数字,最后的结果都是从9位整数变成8位整数.既然同 ...

  6. 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数,求组成的新数最小的删数方案(O((n-k)logk)优化)

    问题描述 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数.对于给定的n和k,设计⼀个算法,找出剩下数字组成的新数最少的删数方案. 这一道题来自zyq老师的算法分析与 ...

  7. LeetCode——787. K 站中转内最便宜的航班(Cheapest Flights Within K Stops)[中等]——分析及代码(Java)

    LeetCode--787. K 站中转内最便宜的航班[Cheapest Flights Within K Stops][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 ( ...

  8. LeetCode 787. K 站中转内最便宜的航班(图/Bellman Ford算法)

    文章目录 贝尔曼-福特算法(Bellman-Ford) 简介 算法思想 算法执行过程 应用 题目描述 分析 代码 LeetCode 787. K 站中转内最便宜的航班 题目描述 Bellman For ...

  9. LeetCode 787.K站中转内最便宜的航班

    LeetCode 787.K站中转内最便宜的航班 有 n 个城市通过 m 个航班连接.每个航班都从城市 u 开始,以价格 w 抵达 v. 现在给定所有的城市和航班,以及出发城市 src 和目的地 ds ...

最新文章

  1. mybatis like的用法
  2. C语言学习笔记(16)
  3. 实验楼 “python3简明教程” 挑战三:玩转函数
  4. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07
  5. asp.Net Cookie demo
  6. c语言程序设计笔记手写图片,C语言程序设计笔记.pdf
  7. Car2go 的前端框架选择
  8. 手机新趋势:智能大屏
  9. Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
  10. boost的时间和日期处理-(1)日期的操作
  11. win10产品密钥查看
  12. linux 内核PCI驱动总结记录
  13. 使用搜索引擎时如何去除广告推荐
  14. win10以太网未识别的网络解决方法
  15. 分支和循环语句---循环语句
  16. iPhone通话质量和基带有关?2招教你检测手机是什么基带!
  17. jquery plugin --image magnifier 放大器
  18. 【C语言】选择排序从小到大,从大到小,详细注释
  19. Google浏览器搜索页自定义图片
  20. HTML+CSS小实例(进度条)

热门文章

  1. 深度学习之RetinaNet
  2. 深度学习之卷积神经网络(Convolutional Neural Networks, CNN)(二)
  3. python程序打包为exe可执行文件
  4. vue大括号里接受一个函数_vue源码探究(第四弹)
  5. QT输入输出(四)之 QProcess
  6. 网络请求数据解析时,判断数据是否为空
  7. 所有的iPhone设备cell的宽度都是320,解决办法是?
  8. oracle的env函数用法,env命令_Linux env 命令用法详解:显示系统中已存在的环境变量...
  9. 面试题:根据Unix时间戳计算时间
  10. ci phpexcel mysql_PHPExcel导入数据到mysql数据库