题解 | #寻找第K大#
寻找第K大
https://www.nowcoder.com/practice/e016ad9b7f0b45048c58a9f27ba618bf
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param a int整型一维数组
* @param n int整型
* @param K int整型
* @return int整型
*/
public int findKth (int[] a, int n, int K) {
if (n == 0) return 0;
quickSort(a, 0, n - 1);
return a[n - K];
}
public void quickSort(int[] arr, int i, int j) {
int start = i;
int end = j;
if (start >= end) return;
int pivot = arr[start];
while (start != end) {
while (true) {
if (end <= start || arr[end] < pivot) {
break;
}
end--;
}
while (true) {
if (end <= start || arr[start] > pivot) {
break;
}
start++;
}
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
int temp = arr[i];
arr[i] = arr[start];
arr[start] = temp;
quickSort(arr, i, start - 1);
quickSort(arr, start + 1, j);
}
}
查看23道真题和解析
