class Solution {
fun findKthLargest(nums: IntArray, k: Int): Int {
val list: MutableList<Int> = mutableListOf()
for (i in nums.indices) {
list.add(nums[i])
}
return quickSelect(list, k)
}
private fun quickSelect(nums: MutableList<Int>, k: Int): Int {
val pivot = nums[nums.size / 2]
val left = nums.filter { it < pivot }
val right = nums.filter { it > pivot }
val mid = nums.filter { it == pivot }
return when {
k <= right.size -> quickSelect(right.toMutableList(), k)
k > right.size + mid.size -> quickSelect(left.toMutableList(), k - right.size - mid.size)
else -> pivot
}
}
}