代码(超时)
class Solution {
public:
void rotate(vector<int>& nums, int k) {
if(k>nums.size()) k=k%nums.size();
for(int i=0;i<k;i++){
nums.insert(nums.begin(),nums[nums.size()-1]);//头插
nums.erase(nums.end()-1);//尾删
}
}
};
超时原因:
数组的插入和删除操作,涉及元素的频繁移动。可能导致性能上的开销,因为在每次插入和删除时,都需要移动大部分数组元素
解决:空间换时间,另外创一个数组
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n=nums.size();
if(k>n) k=k%n;//大于n的情况
vector<int> res(n);
for(int i=0;i<n;i++)
res[(i+k)%n]=nums[i];
nums=res;//赋值
}
};