【leetcode】219. 存在重复元素 II

//结构体存放数组元素的下标和值,接着快排,最后再逐个比较
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;
}
原文地址:https://www.cnblogs.com/ganxiang/p/14043180.html