leetcode no219 - beyondnlp/nlp GitHub Wiki

typedef struct node_t{
    short int num;
    short int idx;
}node_t;

int compare_node( const void *a, const void *b ){

    node_t *x = (node_t*)a;;
    node_t *y = (node_t*)b;
    return x->num - y->num;
}

bool containsNearbyDuplicate(int* nums, int numsSize, int k) {

    int i, j, loop;
    if( numsSize == 0) return false;
    if( numsSize == 1 ) return false;
    if( k == 0 ) return false;
    node_t *node;
    node = malloc(sizeof(node_t)*numsSize );

    for( i = 0; i < numsSize; i++){
        node[i].num = nums[i];
        node[i].idx = i;
    }

    qsort( node, numsSize, sizeof(node_t), compare_node);

    for( i = 1;  i < numsSize; i++ ){
        if( node[i-1].num == node[i].num ){
            if( abs(node[i].idx - node[i-1].idx ) <= k ){
                free(node);
                return true;
            }
        }
    }
    free(node);
    return false;
}