Find K-th largest element in an array. and N is much larger than k.

Notice

You can swap elements in the array

Have you met this question in a real interview?

Yes

Example

In array[9,3,2,4,8], the3rdlargest element is4.

In array[1,2,3,4,5], the1stlargest element is5,2ndlargest element is4,3rdlargest element is3and etc.

class Solution {
public:
    /**
     * @param nums an integer unsorted array
     * @param k an integer from 1 to n
     * @return the kth largest element
     */
    int kthLargestElement2(vector<int> nums, int k) {
        // Write your code here
        priority_queue<int, vector<int>, std::greater<int> > q;
        if (nums.size() < k) {
            return 0;
        }
        for (int num : nums) {
            q.push(num);
            if (q.size() > k) {
                q.pop();
            }
        }
        return q.top();
    }
};

results matching ""

    No results matching ""