旋转数组
题目链接:旋转数组
给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
方法一:使用额外数组
class Solution {
public:
void rotate(vector<int>& nums, int k) {
vector<int> ans(nums.size());
for (int i = 0;i < nums.size();i++) {
ans[(i+k) % nums.size()] = nums[i];
}
nums = ans;
}
};方法二:反转
class Solution {
public:
void rotate(vector<int>& nums, int k) {
k = k%nums.size();
reverse(nums.begin(),nums.end());
reverse(nums.begin(),nums.begin()+k);
reverse(nums.begin()+k,nums.end());
}
};