class Solution {
//用堆排序实现,删除前k-1个元素皆可以得到第k大的元素
// 要求O(n),但是O(nlogn)可以通过
public int findKthLargest(int[] nums, int k) {
// int n = nums.length;
// buildMaxHeap(nums);
// for (int i = n - 1; i > n - k; i--) {
// swap(nums,0,i);
// heapify(nums,i,0);
// }
// return nums[0];
PriorityQueue<Integer> pq = new PriorityQueue<>((a,b)-> b-a);
for (int i = 0; i < nums.length; i++) {
pq.offer(nums[i]);
}
for (int i = 0; i < k - 1; i++) {
pq.poll();
}
int val = pq.poll();
return val;
}
// public void buildMaxHeap(int[] arr) {
// int n = arr.length;
// for (int i = n / 2 - 1; i >= 0; i--) {
// heapify(arr,n,i);
// }
// }
// public void heapify(int[] arr, int n ,int i) {
// int largest = i;
// int left = 2 * i + 1;
// int right = 2 *i + 2;
// if (left < n && arr[left] > arr[largest]) {
// largest = left;
// }
// if (right < n && arr[right] > arr[largest]) {
// largest = right;
// }
// if (largest != i) {
// swap(arr,largest,i);
// heapify(arr,n,largest);
// }
// }
// public void swap(int[] arr, int i ,int j) {
// int temp = arr[i];
// arr[i] = arr[j];
// arr[j] = temp;
// }
}