aboutsummaryrefslogtreecommitdiffstats
path: root/leetcode/3379/main.c
blob: ef62b87b7b3a453aeed74cfb9f58a9629adaf0f9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <stdlib.h>
#include <math.h>


/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
int* constructTransformedArray(int* nums, int numsSize, int* returnSize) {
    int* result = malloc(sizeof(int) * numsSize);
    *returnSize = numsSize;

    for(int i = 0; i < numsSize; i++) {
        if (nums[i] == 0) {
            result[i] = 0;
        } else {
            int j = (i + nums[i]) % numsSize;
            if (j < 0) {
                j += numsSize;
            }
            result[i] = nums[j];
        }
    }

    return result;
}