1)
public int findKthLargest(int[] nums, int k) {
int len=nums.length;
int left=0,right=len-1;
int index=0;
k--;
while(left<right)
{
index=exchange(nums,left,right);
if(k==index)return nums[k];
if(k>index)
{
left=index+1;
}
if(k<index)
{
right=index-1;
}
}
return nums[right];
}
public int exchange(int nums[],int left,int right)
{
int k=nums[left];
while(left<right)
{
while(left<right&&k>=nums[right])
{
right--;
}
nums[left]=nums[right];
while(left<right&&k<=nums[left])
{
left++;
}
nums[right]=nums[left];
}
nums[left]=k;
return left;
}
2)
public int findKthLargest(int[] nums, int k) {
int len=nums.length;
Queue<Integer> que=new PriorityQueue<Integer>(len);
for(int i:nums)
{
que.add(i);
}
int a=0;
int i=0;
while(i<=len-k)
{
a=que.poll();
i++;
}
return a;
}