215 Kth Largest Element in an Array
1. Question
2. Implementation
class Solution {
public int findKthLargest(int[] nums, int k) {
return getKthNum(nums, 0, nums.length - 1, k - 1);
}
public int getKthNum(int[] nums, int start, int end, int k) {
int pivot = partition(nums, start, end);
if (pivot < k) {
return getKthNum(nums, pivot + 1, end, k);
}
else if (pivot > k) {
return getKthNum(nums, start, pivot - 1, k);
}
else {
return nums[pivot];
}
}
public int partition(int[] nums, int start, int end) {
int mid = start + (end - start) / 2;
swap(nums, mid, end);
for (int i = start; i < end; i++) {
if (nums[i] > nums[end]) {
swap(nums, i, start);
++start;
}
}
swap(nums, start, end);
return start;
}
public void swap(int[] nums, int i, int j) {
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}3. Time & Space Complexity
Last updated