一个超时但是正确的解法
class Solution {
public:
void rotateOne(vector<int>&nums)
{
int assist=nums[nums.size()-1];
for(int i=nums.size()-1;i>0;i--)
{
nums[i]=nums[i-1];
}
nums[0]=assist;
}
void rotate(vector<int>& nums, int k) {
k=k%nums.size();
for(int i=0;i<k;i++)
{
rotateOne(nums);
}
}
};
利用三次逆转的办法
class Solution {
public:
void rotate(vector<int>& nums, int k) {
k=k%nums.size();
if(nums.size()==1||nums.size()==0)
{
return;
}
reverse(nums.begin(),nums.end());
reverse(nums.begin(),nums.begin()+k);
reverse(nums.begin()+k,nums.end());
}
};