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的值就是最小返回操作数。