Given an array, rotate the array to the right by k steps, where k is non-negative.
感觉难度不大,但是注释的两句改了好久才改好,还是水平太低
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n=nums.size();
if(k) k=k%n; //把多余的循环次数给去掉;
reverse(nums,0,n-1);
reverse(nums,0,k-1);
reverse(nums,k,n-1);
}
void reverse(vector<int>& nums, int f ,int t){
int temp;
if(f>=t) return;//关键,否则一些短小的测试通不过
for(int i=0;i<=(t-f)/2;i++){
temp=nums[f+i];
nums[f+i]=nums[t-i];
nums[t-i]=temp;
}
}
};