题解 | #最小的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;
}

全部评论

相关推荐

vegetable_vegetable:我也是这个部门这个岗位,但我投的是测开,却被后端捞了
点赞 评论 收藏
分享
02-08 15:53
门头沟学院 Java
CoderEcho:让公司知道便宜没好货
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务