LeetCode 6039. K 次增加后的最大乘积(优先队列)
文章目录
- 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 次增加后的最大乘积(优先队列)相关推荐
- LeetCode 2202. K 次操作后最大化顶端元素
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的整数数组 nums ,它表示一个 栈 ,其中 nums[0] 是栈顶的元素. 每一次操作中,你可以执行以下操作 之一 : 如果栈 ...
- LeetCode 1191. K 次串联后最大子数组之和(前缀和+分类讨论)
文章目录 1. 题目 2. 解题 1. 题目 给你一个整数数组 arr 和一个整数 k. 首先,我们要对该数组进行修改,即把原数组 arr 重复 k 次. 举个例子,如果 arr = [1, 2] 且 ...
- leetcode - 1191. K 次串联后最大子数组之和
给你一个整数数组 arr 和一个整数 k. 首先,我们要对该数组进行修改,即把原数组 arr 重复 k 次. 举个例子,如果 arr = [1, 2] 且 k = 3,那么修改后的数组就是 [1, 2 ...
- LeetCode 358. K 距离间隔重排字符串(贪心+优先队列)
文章目录 1. 题目 2. 解题 1. 题目 给你一个非空的字符串 s 和一个整数 k,你要将这个字符串中的字母进行重新排列,使得重排后的字符串中相同字母的位置间隔距离至少为 k. 所有输入的字符串都 ...
- 漫画:删去k个数字后的最小值
转载自 漫画:删去k个数字后的最小值 我们来举一个栗子: 给定整数 541270936,要求删去一个数,让剩下的整数尽可能小. 此时,无论删除哪一个数字,最后的结果都是从9位整数变成8位整数.既然同 ...
- 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数,求组成的新数最小的删数方案(O((n-k)logk)优化)
问题描述 给定n位正整数a,去掉其中任意k个数字后,剩下的数字按原次序排列组成⼀个新的正整数.对于给定的n和k,设计⼀个算法,找出剩下数字组成的新数最少的删数方案. 这一道题来自zyq老师的算法分析与 ...
- LeetCode——787. K 站中转内最便宜的航班(Cheapest Flights Within K Stops)[中等]——分析及代码(Java)
LeetCode--787. K 站中转内最便宜的航班[Cheapest Flights Within K Stops][中等]--分析及代码[Java] 一.题目 二.分析及代码 1. 动态规划 ( ...
- LeetCode 787. K 站中转内最便宜的航班(图/Bellman Ford算法)
文章目录 贝尔曼-福特算法(Bellman-Ford) 简介 算法思想 算法执行过程 应用 题目描述 分析 代码 LeetCode 787. K 站中转内最便宜的航班 题目描述 Bellman For ...
- LeetCode 787.K站中转内最便宜的航班
LeetCode 787.K站中转内最便宜的航班 有 n 个城市通过 m 个航班连接.每个航班都从城市 u 开始,以价格 w 抵达 v. 现在给定所有的城市和航班,以及出发城市 src 和目的地 ds ...
最新文章
- mybatis like的用法
- C语言学习笔记(16)
- 实验楼 “python3简明教程” 挑战三:玩转函数
- 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-优化函数,学习速率,反向传播,网络优化与超参数选择,Dropout 抑制过拟合概述-07
- asp.Net Cookie demo
- c语言程序设计笔记手写图片,C语言程序设计笔记.pdf
- Car2go 的前端框架选择
- 手机新趋势:智能大屏
- Spring IOC三种注入方式(接口注入、setter注入、构造器注入)
- boost的时间和日期处理-(1)日期的操作
- win10产品密钥查看
- linux 内核PCI驱动总结记录
- 使用搜索引擎时如何去除广告推荐
- win10以太网未识别的网络解决方法
- 分支和循环语句---循环语句
- iPhone通话质量和基带有关?2招教你检测手机是什么基带!
- jquery plugin --image magnifier 放大器
- 【C语言】选择排序从小到大,从大到小,详细注释
- Google浏览器搜索页自定义图片
- HTML+CSS小实例(进度条)
热门文章
- 深度学习之RetinaNet
- 深度学习之卷积神经网络(Convolutional Neural Networks, CNN)(二)
- python程序打包为exe可执行文件
- vue大括号里接受一个函数_vue源码探究(第四弹)
- QT输入输出(四)之 QProcess
- 网络请求数据解析时,判断数据是否为空
- 所有的iPhone设备cell的宽度都是320,解决办法是?
- oracle的env函数用法,env命令_Linux env 命令用法详解:显示系统中已存在的环境变量...
- 面试题:根据Unix时间戳计算时间
- ci phpexcel mysql_PHPExcel导入数据到mysql数据库