【例题1】1920. 基于排列构建数组 - 力扣(LeetCode)

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* buildArray(int* nums, int numsSize, int* returnSize){
    *returnSize =numsSize;
    int* p = (int*)malloc(sizeof(int)*numsSize);
    for(int i=0;i<numsSize;i++){
        p[i] = nums[nums[i]];
    }
    return p;
}

【例题2】1389. 按既定顺序创建目标数组 - 力扣(LeetCode)

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* createTargetArray(int* nums, int numsSize, int* index, int indexSize, int* returnSize){
    int* arr = (int*)malloc(sizeof(int)*indexSize);
    for(int i=0;i<indexSize;i++){
        arr[i] = INT_MIN;
    }
    *returnSize = indexSize;
    int i,j;
    for(i=0;i<indexSize;i++){
        int cur = index[i];
        if(arr[ cur ] == INT_MIN){ // 当位置上没有元素时
            arr[ cur ] = nums[i];
        }else{ // 当位置上有元素时,进行右移
            for(j=indexSize-1;j>=cur+1;j--){
                arr[j] = arr[j-1];
            }
            arr[cur] = nums[i];
        }
    }
    return arr;
}

【例题3】1603. 设计停车系统 - 力扣(LeetCode)

typedef struct {
    int number[3];
} ParkingSystem;

ParkingSystem* parkingSystemCreate(int big, int medium, int small) {
    ParkingSystem* PS = (ParkingSystem*)malloc(sizeof(ParkingSystem));
    PS->number[0] = big;
    PS->number[1] = medium;
    PS->number[2] = small;
    return PS;
}

bool parkingSystemAddCar(ParkingSystem* obj, int carType) {
    if(obj->number[carType-1] == 0) {
        return false;
    }
    obj->number[carType-1]--;
    return true;
}

void parkingSystemFree(ParkingSystem* obj) {
    free(obj);
}

/**
 * Your ParkingSystem struct will be instantiated and called as such:
 * ParkingSystem* obj = parkingSystemCreate(big, medium, small);
 * bool param_1 = parkingSystemAddCar(obj, carType);
 
 * parkingSystemFree(obj);
*/

【例题4】2149. 按符号重排数组 - 力扣(LeetCode)

/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* rearrangeArray(int* nums, int numsSize, int* returnSize){
    int* arr = (int*)malloc(sizeof(int)*numsSize);
    int ou = 0;
    int ji = 1;
    for(int i=0;i<numsSize;i++){
        if(nums[i] > 0){
            arr[ou] = nums[i];
            ou += 2;
        }else{
            arr[ji] = nums[i];
            ji += 2;
        }
    }
    *returnSize = numsSize;
    return arr;
}

【例题5】2221. 数组的三角和 - 力扣(LeetCode)

int triangularSum(int* nums, int numsSize){
    for(int i=0;i<numsSize;i++){
        for(int j=0;j<numsSize-i-1;j++){
            nums[j] = (nums[j] + nums[j+1])%10;
        }
    }
    return nums[0];
}