首页 > 编程语言 >【算法题】2530.执行 K 次操作后的最大分数

【算法题】2530.执行 K 次操作后的最大分数

时间:2023-10-26 10:04:22浏览次数:31  
标签:分数 10 nums int 算法 ans 操作 2530

题目:

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。你的 起始分数 为 0 。

在一步 操作 中:

选出一个满足 0 <= i < nums.length 的下标 i ,
将你的 分数 增加 nums[i] ,并且
将 nums[i] 替换为 ceil(nums[i] / 3) 。
返回在 恰好 执行 k 次操作后,你可能获得的最大分数。

向上取整函数 ceil(val) 的结果是大于或等于 val 的最小整数。

示例 1:

输入:nums = [10,10,10,10,10], k = 5
输出:50
解释:对数组中每个元素执行一次操作。最后分数是 10 + 10 + 10 + 10 + 10 = 50 。
示例 2:

输入:nums = [1,10,3,3,3], k = 3
输出:17
解释:可以执行下述操作:
第 1 步操作:选中 i = 1 ,nums 变为 [1,4,3,3,3] 。分数增加 10 。
第 2 步操作:选中 i = 1 ,nums 变为 [1,2,3,3,3] 。分数增加 4 。
第 3 步操作:选中 i = 2 ,nums 变为 [1,1,1,3,3] 。分数增加 3 。
最后分数是 10 + 4 + 3 = 17 。

提示:

1 <= nums.length, k <= 10^5
1 <= nums[i] <= 10^9

java代码:

class Solution {
	//	 贪心+优先队列
    public long maxKelements(int[] nums, int k) {
        PriorityQueue<Integer> q = new PriorityQueue<Integer>((a, b) -> b - a);
        for (int num : nums) {
            q.offer(num);
        }
        long ans = 0;
        for (int i = 0; i < k; ++i) {
            int x = q.poll();
            ans += x;
            q.offer((x + 2) / 3);
        }
        return ans;
    }
}


标签:分数,10,nums,int,算法,ans,操作,2530
From: https://blog.51cto.com/u_6813689/8030080

相关文章

  • 【算法题】2899. 上一个遍历的整数
    题目:给你一个下标从0开始的字符串数组words,其中words[i]要么是一个字符串形式的正整数,要么是字符串“prev”。我们从数组的开头开始遍历,对于words中的每个“prev”字符串,找到words中的上一个遍历的整数,定义如下:k表示到当前位置为止的连续“prev”字符串数目(包含......
  • 【算法题】2903. 找出满足差值条件的下标 I
    题目:给你一个下标从0开始、长度为n的整数数组nums,以及整数indexDifference和整数valueDifference。你的任务是从范围[0,n-1]内找出2个满足下述所有条件的下标i和j:abs(i-j)>=indexDifference且abs(nums[i]-nums[j])>=valueDifference返回整数数组a......
  • 【算法题】只出现一次的数字 III
    题目:给你一个整数数组nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。找出只出现一次的那两个元素。你可以按任意顺序返回答案。你必须设计并实现线性时间复杂度的算法且仅使用常量额外空间来解决此问题。示例1:输入:nums=[1,2,1,3,2,5]输出:[3,5]解释:[5,3]也是......
  • APP渗透--magisk+LSPosed+算法助手环境安装
    安装mgisk1、先安装app-debug.apk首先设置好模拟器的设置设置为可写入开启root之后重启安装app-debug.apk然后点开这个面具给root权限点击安装勾选这个选项之后就重启然后点开面具之后点击下一步必须看到安装到系统分区之后点击开始等待安装直到这里出现alldon......
  • 电机模型预测控制算法
    电机模型预测控制(ModelPredictiveControl,简称MPC)是一种基于模型的先进控制算法,适用于电机矢量控制。与传统的比例积分控制(PI控制)相比,MPC算法能够更好地优化控制性能和动态响应。下面是电机模型预测控制算法的基本步骤:建立电机模型:首先,需要建立电机的动态数学模型。一般情况下,可以......
  • 电机矢量控制算法和例程
    电机矢量控制算法是一种高级的电机控制方法,它通过将电机转子空间矢量转换到旋转坐标系中,并在该坐标系中进行控制来实现对电机的精确控制。下面是对电机矢量控制算法的详细解释:坐标系变换:电机矢量控制首先将电机转子空间矢量变换到一个旋转坐标系中,通常是dq坐标系。dq坐标系是以转子......
  • 开环控制算法
    开环控制是一种基础的控制算法,它不依赖于反馈信息来调整输出,而是根据预设的输入信号直接生成控制信号。对于BLDC电机,开环控制算法可以简单地根据输入信号来控制相位切换,从而控制电机的转速。以下是一个基本的BLDC电机的开环控制算法示例://定义BLDC电机的引脚intphaseA=2;int......
  • 10.25算法
    矩阵置零给定一个 mxn的矩阵,如果一个元素为0,则将其所在行和列的所有元素都设为0。请使用原地算法。 示例1:输入:matrix=[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例2:输入:matrix=[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,......
  • 使用BBP算法计算π,Python实现
     BBP算法(Bailey-Borwein-Plouffe算法)是一种用于计算π的算法,它可以直接计算出π的十六进制表示的任意一位。BBP算法由SimonPlouffe于1995年提出,基于DavidBailey和PeterBorwein在1995年的工作。BBP算法的基本思想是使用级数展开,将π表示为一个无限级数的和。具体来说,BBP算法......
  • KMP算法【字符串搜索算法】
    KMP算法1.算法核心利用匹配失败后的信息尽量减少模式串(B)与主串(A)的匹配次数以达到快速匹配的目的通过一个next数组,保存模式串(B)中前后最长公共子序列的长度,每次回溯时,通过next数组找到,前面匹配过的位置,省去了大量的计算时间2.如何减少匹配次数2.1.字符串的前缀和后......