第一思路使用优先队列priority_queue来模拟小根堆
通过不断pop与push执行到第k次即为目标值
执行思路使用归并思想
class Solution {public:vector<int> kthSmallestPrimeFraction(vector<int>& arr, int k) {auto cmp = [&](const pair<int,int>& x,const pair<int,int>& y){return arr[x.first]*arr[y.second]>arr[x.second]*arr[y.first];};priority_queue<pair<int,int>,vector<pair<int,int>>,decltype(cmp)> pq(cmp);for(int i=1;i<arr.size();++i){pq.emplace(0,i);//多路归并的思想}while(--k){auto [i,j]=pq.top();pq.pop();if(i+1<j){pq.emplace(i+1,j);}}//auto [i,j] = pq.top();return {arr[pq.top().first], arr[pq.top().second]};}};
