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;
}
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;
}
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;
}
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;
}