Kth Largest in N Arrays

Find K-th largest element in N arrays.

Example In n=2 arrays [[9,3,2,4,7],[1,2,3,4,8]], the 3rd largest element is 7.

In n=2 arrays [[9,3,2,4,8],[1,2,3,4,2]], the 1st largest element is 9, 2nd largest element is 8, 3rd largest element is 7 and etc.

S:min heap

维护一个大小为k的最小堆,loop每个array最大的k个元素,比较当前元素于堆顶元素(k个元素中最小的),如果当前元素大于堆顶,pop堆顶,当前元素入堆。

    int KthInArrays(vector<vector<int>>& arrays, int k) {
        // Write your code here
        int size = arrays.size();
        if (size < 1) {
            return 0;
        } 
        priority_queue<int, vector<int>, greater<int>> queue;
        for (int i = 0; i < size; ++i) {
            sort(arrays[i].begin(), arrays[i].end());
            int n = arrays[i].size();
            for (int j = n - 1; j >= n - k && j >= 0; --j) {
                if (queue.size() < k) {
                    queue.push(arrays[i][j]);
                } else if (queue.top() < arrays[i][j]) {
                    queue.pop();
                    queue.push(arrays[i][j]);
                }
            }
        }
        if (queue.size() < k) {
            return 0;
        }
        return queue.top();
    }

results matching ""

    No results matching ""