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 a=0;
while(pq.top()<k){
long long x=pq.top();pq.pop();
long long y=pq.top();pq.pop();
pq.push(x*2+y);
a++;
}
return a;
}
};
//a是最小返回操作次数
//priority_queue是一种排序队列,long long 是长整型,greater表示升序
//pq.top()代表堆顶元素,long long x=pq.top()把堆顶元素赋值给x,此时x是pq中最小的数值,pq.pop()表示移除堆顶元素
//把更新后的堆顶元素赋值给y(y更新后的最小值),再移除堆顶·
//pq.push表示把(x*2+y)加入到pq中
//次数a加一
//依次循环直到pq.top>k,结束循环返回a的值就是最小返回操作数。