786. K-th Smallest Prime Fraction
Solution
public int[] kthSmallestPrimeFraction(int[] A, int K) {
PriorityQueue<int[]> pq = new PriorityQueue<>((a,b)->Double.compare((double)a[0]/a[1], (double)b[0]/b[1]));
int[] ret = new int[2];
int N = A.length;
for(int i = 1; i < N; i++){
pq.add(new int[]{A[0], A[i], 0});
}
while(!pq.isEmpty()){
int[] cur = pq.poll();
if(cur[2] < N-1){
pq.add(new int[]{A[cur[2]+1], cur[1], cur[2]+1});
}
K--;
if(K == 0){
ret[0] = cur[0];
ret[1] = cur[1];
break;
}
}
return ret;
}
Last updated
Was this helpful?