示例 1:输入:arr = [3,2,1], k = 2
输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1
输出:[0]
利用快速排序划分数组
class Solution {public int[] getLeastNumbers(int[] arr, int k) {if (k >= arr.length) return arr;return quickSort(arr, k, 0, arr.length - 1);}//快速排序private int[] quickSort(int[] arr, int k, int l, int r) {int i = l, j = r;while (i < j) {while (i < j && arr[j] >= arr[l]) j--;while (i < j && arr[i] <= arr[l]) i++;swap(arr, i, j);}swap(arr, i, l);//判断i索引,等于k就返回,否则继续划分if (i > k) return quickSort(arr, k, l, i - 1);if (i < k) return quickSort(arr, k, i + 1, r);return Arrays.copyOf(arr, k);}//交换private void swap(int[] arr, int i, int j) {int tmp = arr[i];arr[i] = arr[j];arr[j] = tmp;}
}
上一篇:高考录取通知书(高考录取通知书一般几月发放) 高考录取通知书 高考录取通知书感人视频
下一篇:「PAT乙级真题解析」Basic Level 1091 N-自守数 (问题分析+完整步骤+伪代码描述+提交通过代码)