786. K-th Smallest Prime Fraction

Link

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?