【leetcode】距离顺序排列矩阵单元格

 

int cmp(const void* a, const void* b){
    return (abs((*(int**)a)[0]) + abs((*(int**)a)[1])) - (abs((*(int**)b)[0]) + abs((*(int**)b)[1]));
}

int** allCellsDistOrder(int R, int C, int r0, int c0, int* returnSize, int** returnColumnSizes){
    int i,j,pst=0;
    int** arr = (int**)malloc(R*C*sizeof(int*));
    for (i=0; i<R; i++)
    {
        for (j=0; j<C; j++)
        {
            int* unit = (int*)malloc(2*sizeof(int));
            arr[pst++] = unit;
            unit[0] = i-r0;
            unit[1] = j-c0;
        }
    }
    qsort(arr,pst,sizeof(int*),cmp);
    int* retCol = (int*)malloc(pst*sizeof(int));
    for (i=0; i<pst; i++)
    {
        arr[i][0] += r0;
        arr[i][1] += c0;
        retCol[i] = 2;
    }
    *returnColumnSizes = retCol;
    *returnSize = pst;
    return arr;
}

 

posted @ 2020-09-21 09:29  温暖了寂寞  阅读(164)  评论(0编辑  收藏  举报