Day 35 of 100 Days LeetCode Challenge

LeetCode Challenge #215. Kth Largest Element in an Array

Given an integer array nums and an integer k, return the kth largest element in the array.

Note that it is the kth largest element in the sorted order, not the kth distinct element.

Can you solve it without sorting?

 

Example 1:

Input: nums = [3,2,1,5,6,4], k = 2
Output: 5

Example 2:

Input: nums = [3,2,3,1,2,4,5,5,6], k = 4
Output: 4

 

Constraints:

  • 1 <= k <= nums.length <= 105
  • -104 <= nums[i] <= 104
Java Video Solution
C++ Video Solution
Java Solution
				
					class Solution {
    public int findKthLargest(int[] nums, int k) {
       PriorityQueue<Integer> pq = new PriorityQueue<>();

       for(int i=0;i<nums.length;i++){

           if(pq.size()<k){
               pq.add(nums[i]);
           }else if ( pq.peek()<nums[i]){
               pq.remove();
               pq.add(nums[i]);
           }
       }

       return pq.peek();
    }
}
				
			
C++ Solution
				
					class Solution {
public:
    int findKthLargest(vector<int>& nums, int k) {
        priority_queue<int> q;
        for(auto i:nums)q.push(i);

        while(--k)
        {
            q.pop();
        }
        return q.top();
    }
};
				
			

Happy Coding with edSlash