题解 | #最小的K个数#
最小的K个数
https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param input int整型一维数组 * @param inputLen int input数组长度 * @param k int整型 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ int* GetLeastNumbers_Solution(int* input, int inputLen, int k, int* returnSize ) { // write code here if (k <= 0) { *returnSize = 0; return NULL; } for (size_t i = 0; i < inputLen;i++) { //冒泡排序外层,控制循环次数 for (size_t j = 0; j + 1 < inputLen - i;j++) { //内层,数组内大的后移,置于最后,然后待排序个数-- 即:j + 1 < inputLen - i; //i+1 表示欲交换的后一位数据 if (input[j] > input[j + 1]) { int temp; temp = input[j+1]; input[j + 1] = input[j]; input[j] = temp; } } } int* arr = (int*)malloc(sizeof(int) * k); for (int i = 0; i < k; i++) { arr[i] = input[i]; } *returnSize = k; return arr; }
对原数组进行冒泡(升序),堆排序,快排等均可,然后将前K个数据传给一个临时数组,最后返回临时数组即可;

