【leetcode】最小绝对差

int cmp(const void* a, const void* b){
    return *(int*)a - *(int*)b;
}
int** minimumAbsDifference(int* arr, int arrSize, int* returnSize, int** returnColumnSizes){
    int i,min=2000001,pst=0;
    int** RetArr = (int**)malloc(arrSize*sizeof(int*));
    int *retColSize = (int*)malloc(arrSize * sizeof(int)); //这题必须新分配列空间 如果在*returnColumnSizes直接改列数返回出错
    qsort(arr,arrSize,sizeof(int),cmp);
    for (i=0; i<arrSize-1; i++)
    {
        if (abs(arr[i] - arr[i+1]) <= min)
        {
            if (abs(arr[i] - arr[i+1]) < min) {
                pst=0;
                min = abs(arr[i] - arr[i+1]);
            }            
            RetArr[pst] = (int*)malloc(2*sizeof(int));
            RetArr[pst][0] = arr[i];
            RetArr[pst][1] = arr[i+1];
            retColSize[pst++] = 2;
        }
    }
    *returnColumnSizes = retColSize;
    *returnSize = pst;    
    return RetArr;
}
原文地址:https://www.cnblogs.com/ganxiang/p/13690920.html