//结构体存放数组元素的下标和值,接着快排,最后再逐个比较 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; }