Skip to content

1365 有多少小于当前数字的数字

简单 计数排序

算法思路

非常显然的计数排序,无需多言。

代码实现

how-many-numbers-are-smaller-than-the-current-number.c
int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize) {
    returnSize[0] = numsSize;
    int* ret = (int*)malloc(numsSize * sizeof(int));
    int count[105], sum[105];
    memset(count, 0, 105 * sizeof(int));
    memset(sum, 0, 105 * sizeof(int));
    for (int i = 0; i < numsSize; i++) {
        count[nums[i]]++;
    }
    for (int i = 1; i <= 100; i++) {
        sum[i] = sum[i - 1] + count[i - 1];
    }
    for (int i = 0; i < numsSize; i++) {
        ret[i] = sum[nums[i]];
    }
    return ret;
}