题目:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
解题关键:可以额外加一个数组,nums[(i+k)%k] = nums1[i];
#include<iostream>
#include<vector>
#include<map>
using namespace std;
class Solution
{
public:
void rotate(vector<int>& nums, int k)
{
int cnt = nums.size();
vector<int> n(cnt); //在 C++ 中,std::vector的初始大小是零,这意味着如果你不对其预先分配空间,就无法通过索引进行访问或赋值
for (int i = 0; i < cnt; i++)
{
n[(i + k) % cnt] = nums[i];
}
nums = n;
for (auto& it : n)
{
cout << it << endl;
}
}
};
int main()
{
vector<int> nums = {1,2,2,2,2,3,3,4};
Solution a;
a.rotate(nums,4);
return 0;
}