2023-10-18 LeetCode每日一题(执行 K 次操作后的最大分数)

2023-10-18每日一题

一、题目编号

2530. 执行 K 次操作后的最大分数

二、题目链接

点击跳转到题目位置

三、题目描述

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

在一步 操作 中:

  1. 选出一个满足 0 <= i < nums.length 的下标 i ,
  2. 将你的 分数 增加 nums[i] ,并且
  3. 将 nums[i] 替换为 ceil(nums[i] / 3) 。

返回在 恰好 执行 k 次操作后,你可能获得的最大分数。

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

示例 1:
在这里插入图片描述

示例 2:
2023-10-18 LeetCode每日一题(执行 K 次操作后的最大分数)_第1张图片
提示:

  • 1 <= nums.length, k <= 105
  • 1 <= nums[i] <= 109

四、解题代码

class Solution {
public:
    long long maxKelements(vector<int>& nums, int k) {
        priority_queue<int> q(nums.begin(), nums.end());
        long long ans = 0;
        for (int i = 0; i < k; ++i) {
            int x = q.top();
            q.pop();
            ans += x;
            q.push((x + 2) / 3);
        }
        return ans;
    }
};

五、解题思路

(1) 模拟+优先队列。

你可能感兴趣的:(LeetCode每日一题,leetcode,算法,数据结构)