题目
旋转数组
暴力实现–一步一步的移动(超时警告)
void rotate(vector<int>& nums, int k) {
int len = nums.size();
k = k % len;
if(k==0||len == 0||len == 1)return;
for(int i=0;i<k;i++){
int temp = nums[len-1];
for(int j=len-1;j>0;j--){
nums[j] = nums[j-1];
}
nums[0] = temp;
}
}
反转实现
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int len = nums.size();
k = k%len;
if(len<=1||k==0)return;
reserve(nums,0,len-1);
reserve(nums,0,k-1);
reserve(nums,k,len-1);
}
private:
void reserve(vector<int>& nums,int l,int r){
int temp = 0;
while(l<r){
temp = nums[l];
nums[l] = nums[r];
nums[r] = temp;
l++;
r--;
}
}
};