题解 | #最小的K个数#

最小的K个数

https://www.nowcoder.com/practice/6a296eb82cf844ca8539b57c23e6e9bf

/********************************
关键处理:
  定义一个数组更新的函数arrayUpdate,递归处理将传到函数的值放到数组指定位置;
递归思路:
     如果当value小于等于传入数组arr首值,将传入值赋给*arr,将之前的数组首值tmp作为参数传入*arr之后的数组(arr+1, size -1)中
     如果当value大于数组arr首值,将value作为参数放到数组首值*arr之后的数组(arr+1 , size-1)中
*********************************/
void arrayUpdate(int* arr, int size, int value) {
    int i = 0;
    int tmp = *arr;
    if (size < 1) {
        return;
    }
    if (value <= tmp) {
        *arr = value;
        arrayUpdate(arr + 1, size - 1, tmp);
    } else {
        arrayUpdate(arr + 1, size - 1, value);
    }
}
int* GetLeastNumbers_Solution(int* input, int inputLen, int k,
                              int* returnSize ) {
    // write code here
    if (!input || inputLen == 0 || k > inputLen || k < 0 || k > 10000) {
        *returnSize = 0;
        return NULL;
    }
    int* arr = (int*)malloc(sizeof(int) * k);
    for (int i = 0; i < k; i++) {
        arr[i] = 1001;
    }
    for (int i = 0; i < inputLen; i++) {
        arrayUpdate(arr, k, input[i]);
    }
    *returnSize = k;
    return arr;
}

全部评论

相关推荐

程序员小白条:你不是有一段实习了吗,现在找中大厂实习?过段时间要秋招了
我的简历长这样
点赞 评论 收藏
分享
zhch7:建议9✌️把学历加黑加粗,如果实在offer可能是觉得佬不会去
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务