3066 超过阈值的最少操作数 II

·   ·   ·   ·

  ·   ·


题目链接

3066. 超过阈值的最少操作数 II

分析

构建最小堆,每次取出堆顶的两个元素进行模拟即可

代码实现

class Solution {
public:
    int minOperations(vector<int>& nums, int k) {
        priority_queue<long long, vector<long long>, greater<>> pq(nums.begin(), nums.end());
        int ans = 0;
        while(pq.top() < k) {
            long long x = pq.top();
            pq.pop();
            long long y = pq.top();
            pq.pop();
            pq.push(1ll * x * 2 + y);
            ans++;
        }
        return ans;
    }
};

复杂度分析

  • 时间复杂度:$O(n \log n)$
  • 空间复杂度:$O(n)$