![](https://img-blog.csdnimg.cn/direct/bb0338409e9d47dcb967a95178cb840a.png)
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int size=nums.size();
k=k%size;
int j=0,i=size-k,m=k;
if(size<k) return ;
int nums1[size];
while(m!=0){
nums1[j++]=nums[i++];
m--;
}
j=k;
i=size-k-1;
size=size-1;
while(i>=0){
nums[size--]=nums[i--];
}
j=0;
m=k;
for(int i=0;i<k;i++){
nums[i]=nums1[i];
}
}
};
class Solution {
public:
//法1 辅助数组
void rotate(vector<int>& nums, int k) {
int len=nums.size();
vector<int> res(len);
for(int i=0;i<len;i++){
res[(i + k)%len]=nums[i];// 处理k大于数组长度的情况
}
nums=res;
}
//法2.数组翻转
// reverse "----->-->" get "<--<-----"
// reverse "<--" get "--><-----"
// reverse "<-----" get "-->----->"
void rotate(vector<int>& nums, int k) {
int len=nums.size();
k = k % len; // 处理k大于数组长度的情况
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin()+k);//左闭右开
reverse(nums.begin()+k, nums.end());
}
};