题意
给定一个循环数组,如果nums[i]为负数,则结果的第i位是原数组中第i位移动nums[i]长度的那个数字。如果nums[i]为正数,那么向右移动,如果nums[i]为负数,那么向左移动。
例如[1,2],那么返回的答案为[2,2]
题目链接
https://leetcode.com/problems/transformed-array/description/
思考
很容易理解的模拟题,利用((i + nums[i])%n + n)%n;
题解
class Solution {
public:
vector<int> constructTransformedArray(vector<int>& nums) {
vector<int> res;
int n = nums.size();
for(int i = 0; i < n; i++) {
int id = ((i + nums[i])%n + n)%n;
res.push_back(nums[id]);
}
return res;
}
};
时间复杂度
O
(
n
)
O(n)
O(n)
空间复杂度
O
(
1
)
O(1)
O(1)