LeetCode-in-Java

3379. Transformed Array

Easy

You are given an integer array nums that represents a circular array. Your task is to create a new array result of the same size, following these rules:

For each index i (where 0 <= i < nums.length), perform the following independent actions:

Return the new array result.

Note: Since nums is circular, moving past the last element wraps around to the beginning, and moving before the first element wraps back to the end.

Example 1:

Input: nums = [3,-2,1,1]

Output: [1,1,1,3]

Explanation:

Example 2:

Input: nums = [-1,4,-1]

Output: [-1,-1,4]

Explanation:

Constraints:

Solution

public class Solution {
    public int[] constructTransformedArray(int[] nums) {
        int n = nums.length;
        int[] res = new int[n];
        for (int i = 0; i < n; i++) {
            if (nums[i] > 0) {
                res[i] = nums[(i + nums[i]) % n];
            } else if (nums[i] < 0) {
                int r = (Math.abs(nums[i])) / n;
                res[i] = nums[Math.abs((i + nums[i] + r * n + n)) % n];
            }
        }
        return res;
    }
}