//结构体存放数组元素的下标和值,接着快排,最后再逐个比较
typedef struct {
int index;
int val;
}st;
int cmp(const void* a, const void* b){
return ((*(st*)a).val != (*(st*)b).val)?(*(st*)a).val > (*(st*)b).val :(*(st*)a).index > (*(st*)b).index;
}
bool containsNearbyDuplicate(int* nums, int numsSize, int k){
st* arr = (st*)calloc(numsSize,sizeof(st));
int i;
for (i=0; i<numsSize; i++){
arr[i].index=i;
arr[i].val=nums[i];
}
qsort(arr,numsSize,sizeof(st),cmp);
for (i=1; i<numsSize; i++)
if (arr[i].val == arr[i-1].val && abs(arr[i].index-arr[i-1].index)<=k )
return true;
return false;
}