0
点赞
收藏
分享

微信扫一扫

Leetcode 1920. 基于排列构建数组

独西楼Q 2022-04-13 阅读 22
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* buildArray(int* nums, int numsSize, int* returnSize){
    assert(nums);
    int* ans = (int*)malloc(sizeof(int) *numsSize);
    for(int i=0;i<numsSize;i++)
    {
        ans[i] = nums[nums[i]];
    }
    *returnSize = numsSize;
    return ans;
}
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* getConcatenation(int* nums, int numsSize, int* returnSize){
    assert(nums);
    int* ans = (int*)malloc(sizeof(int) * 2 * numsSize);
    for(int i=0;i < numsSize;i++)
    {
        ans[i] = nums[i];
        ans[i + numsSize] = nums[i];
    }
    *returnSize = 2 * numsSize;
    return ans;
}
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* runningSum(int* nums, int numsSize, int* returnSize){
    assert(nums);
    int* ans = (int*) malloc(sizeof(int) *numsSize);
    for(int i = 0;i < numsSize;i++)
    {
        int j = i-1;
        if(j == -1)
        {
            ans[i] = nums[i];
            continue;
        }
        
        ans[i] =  nums[i] + ans[j];
    }
    *returnSize = numsSize;
    return ans;
}
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* decode(int* encoded, int encodedSize, int first, int* returnSize){
    assert(encoded);
    int* ans = (int*)malloc(sizeof(int) *(encodedSize+1));
    for(int i = -1;i < encodedSize;i++)
    {
       
        if(i == -1)
        {
            ans[0] = first;
            continue;
        }
        ans[i+1] = ans[i] ^ encoded[i];
    }
    *returnSize = encodedSize+1;
    return ans;
}
举报

相关推荐

0 条评论