思路:
1.定义返回的数组
2.用qsort函数排序
3.找目标,把下标存进去
4.返回数组长度
5.返回结果
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int cmp(const void*a,const void*b){
return *(int*)a-*(int*)b; //比较函数
}
int* targetIndices(int* nums, int numsSize, int target, int* returnSize){
int*ans;
ans=(int*)malloc(sizeof(int)*numsSize);
int ansSize=0; //定义并初始化一个返回答案的数组
qsort(nums,numsSize,sizeof(int),cmp); //排序函数
for(int i=0;i<numsSize;++i){ //枚举每一个数,和target比较,相等,就把这个下标
//存到我们要返回的数组里边
if(nums[i]==target){
ans[ansSize++]=i;
}
if(nums[i]>target){ //因为是排过序所以往后的就可以不用考虑了
break;
}
}
free(nums);
*returnSize=ansSize; //只是返回的数组的长度
return ans;
}