import java.util.Arrays;
class Solution {
public int findKthLargest(int[] nums, int k){
if(nums==null || nums.length==0){return 0;}return quickSerch(nums,0,nums.length-1,k-1);}
public int quickSerch(int[] nums,int lo,int hi,int k){
int s=partition(nums,lo,hi);
if(s==k){return nums[k];}else if(s>k){//说明左边的值个数大于k
return quickSerch(nums,lo,s-1,k);}else{return quickSerch(nums,s+1,hi,k);}}
public int partition(int[] nums,int lo,int hi){
int mid=hi;
int cur=lo;
while(cur<mid){
if(nums[cur]>=nums[hi]){
cur++;}else{
swap(nums,cur,--mid);}}
swap(nums,hi,mid);return mid;}
public void swap(int[] nums,int i,int j){
int temp=nums[i];
nums[i]=nums[j];
nums[j]=temp;}}
2.堆
import java.util.PriorityQueue;
class Solution {
public int findKthLargest(int[] nums, int k){
if(nums.length==0 || k==0){return 0;}
PriorityQueue<Integer> pq=new PriorityQueue<Integer>();
for(int i=0;i<nums.length;i++){
if(i<k){
pq.offer(nums[i]);}else{
if(nums[i]>pq.peek()){
pq.poll();
pq.offer(nums[i]);}}}return pq.poll();}}
1partitonimport java.util.Arrays;class Solution { public int findKthLargest(int[] nums, int k) { if(nums==null || nums.length==0){ return 0; } return quickSerch(nums,0,nums.length-1,k-1); } public int quic