Question
Find the kth largest element in an unsorted array. Note that it is the kth largest element in the sorted order, not the kth distinct element.
For example,
Given [3,2,1,5,6,4]
and k = 2, return 5.
Note:
You may assume k is always valid, 1 ≤ k ≤ array‘s length.
Solution 1 -- PriorityQueue
1 public class Solution { 2 public int findKthLargest(int[] nums, int k) { 3 if (nums == null || k > nums.length) 4 return 0; 5 int length = nums.length, index = length - k, result = 0; 6 PriorityQueue<Integer> pq = new PriorityQueue<Integer>(length, 7 new Comparator<Integer>(){ 8 public int compare(Integer a, Integer b) { 9 return (a - b); 10 } 11 }); 12 for (int i = 0; i < length; i++) 13 pq.add(nums[i]); 14 while (index >= 0) { 15 result = pq.poll(); 16 index--; 17 } 18 return result; 19 } 20 }
Solution 2 -- Quick Select
时间: 2024-10-21 14:34:49