private static int quickSelect(List<Integer> nums,int k){
Random random = new Random();
Integer pivot = nums.get(random.nextInt(nums.size()));
ArrayList<Integer> big = new ArrayList<>();
ArrayList<Integer> equal = new ArrayList<>();
ArrayList<Integer> small = new ArrayList<>();
for (int num:
nums) {
if(num>pivot)
big.add(num);
else if(num<pivot)
small.add(num);
else
equal.add(num);
}
if(k<=big.size()){
return quickSelect(big,k);
}
if(big.size()+equal.size()<k){
return quickSelect(small,k-(big.size()+equal.size()));
}
return pivot;
}
public static int findKthLargest(int[] nums,int k){
ArrayList<Integer> list = new ArrayList<>();
for (int num:
nums) {
list.add(num);
}
return quickSelect(list,k);
}