每日一题——189. 旋转数组
189. 旋转数组
分类:
- 数组
数组循环移位经典题
class Solution { // 翻转数组
public:
void reverse(vector<int>& nums, int i, int j){
int t;
while(i < j){
t = nums[i];
nums[i++] = nums[j];
nums[j--] = t;
}
}
void rotate(vector<int>& nums, int k) {
int n = nums.size();
k = k % n; // 处理当k大于数组长度的情况
reverse(nums, 0, n-k-1);
reverse(nums, n-k ,n-1);
reverse(nums, 0, n-1);
}
};
/* 17% **/
/* i++; j--; 拿到外面来就是98% 迷惑**/
class Solution { // 复制数组
public:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
vector<int> res(n);
for(int i=0; i<n; i++){
res[(i+k)%n] = nums[i];
}
nums = res;
}
};/* 50% **/
还有一种,记录被覆盖位置,交换
2021/01/08

浙公网安备 33010602011771号