换edge后发现插件好少,而且不想开开发者模式。。于是力扣题目转markdown没得用了,水🤣
题目
解法
因为元素范围0~1000蛮少的,用桶排序
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* relativeSortArray(int* arr1, int arr1Size, int* arr2, int arr2Size, int* returnSize){
int tong[1005]={0};
int *result=(int *)malloc(sizeof(int)*arr1Size);
int index=0;
*returnSize=arr1Size;
for (int j=0;j<arr1Size;j++)//让桶计数
tong[arr1[j]]++;
for (int j=0;j<arr2Size;j++)//遍历arr2,把桶中对应的数加到答案里
{
for (int k=0;k<tong[arr2[j]];k++)
result[index++]=arr2[j];
tong[arr2[j]]=0;
}
for (int k=0;k<1001;k++)//升序遍历桶,把剩下的也加到答案里
{
if (tong[k]!=0)
for (int i=0;i<tong[k];i++)
result[index++]=k;
}
return result;
}