/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int comp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int* topKFrequent(int* nums, int numsSize, int k, int* returnSize){
qsort(nums, numsSize, sizeof(int), comp);
int i, len=1;
for(i = 1; i<numsSize; i++)
{
if(nums[i] == nums[i-1]) continue;
len++;
}
int *a = (int *)malloc(sizeof(int) * len);
memset(a, 0, sizeof(int) * len);
a[0] = nums[0];
int *b = (int *)malloc(sizeof(int) * len);
memset(b, 0, sizeof(int) * len);
b[0] = 1;
int index = 0;
for(i = 1; i<numsSize; ++i)
{
if(nums[i] == nums[i-1])
{
b[index]++;
continue;
}
index++;
a[index] = nums[i];
b[index]++;
}
for(i = 0; i<k; ++i)
{
for(index = i+1; index<len; ++index)
{
if(b[index] > b[i])
{
int tmp = b[index];
b[index] = b[i];
b[i] = tmp;
tmp = a[index];
a[index] = a[i];
a[i] = tmp;
}
}
}
int *result = (int *)malloc(sizeof(int) * k);
for(i = 0; i<k; ++i)
{
result[i] = a[i];
}
*returnSize = k;
free(b);
free(a);
return result;
}
#剑指 Offer II 060. 出现频率最高的 k 个数字
最新推荐文章于 2022-08-07 09:45:19 发布