Leetcode189
我的方法:
class Solution {
public:
void rotate(vector<int>& nums, int k) {
vector<int> new_nums(nums.size());
int n = k%nums.size();
int j=0;
for(int i=nums.size()-n;i<nums.size();i++){
new_nums[j++] = nums[i];
}
for(int i=0;i<nums.size()-n;i++){
new_nums[j++]=nums[i];
}
for(int i=0;i<nums.size();i++){
nums[i]=new_nums[i];
}
}
};
performance: Beats 48.27% of users with C++
一个看起来更简单的方法:
class Solution {
public:
void rotate(vector<int>& nums, int k) {
k=k%nums.size();
reverse(nums.begin(),nums.begin()+(nums.size()-k));
reverse(nums.begin()+(nums.size()-k),nums.end());
reverse(nums.begin(),nums.end());
}
};
利用reverse函数。这个方法的缺点是不太容易想到,有点巧妙。但其实本质上并不快多少,感觉没什么太大意义。