【leetcode】数组序号转换

 

typedef struct{
    int val;
    int index;
}st;
int cmp(const void* a, const void* b){
    return ((st*)a)->val - ((st*)b)->val;
}
int* arrayRankTransform(int* arr, int arrSize, int* returnSize){
    st* stArr = (st*)calloc(arrSize,sizeof(st));
    int i,j=1;
    for (i=0; i<arrSize; i++) 
    {
        stArr[i].index = i;
        stArr[i].val = arr[i];
    }
    qsort(stArr,arrSize,sizeof(st),cmp);
    for (i=0; i<arrSize; i++) 
    {
        arr[stArr[i].index] = (i && stArr[i].val == stArr[i-1].val)? j-1: j++;
    }
    *returnSize = arrSize;
    return arr;
}

 

posted @ 2020-09-10 15:17  温暖了寂寞  阅读(203)  评论(0编辑  收藏  举报