[LeetCode]189. Rotate Array
题目描述
思路
暴力解法: 计算要移动的次数k,然后将vector尾的数据弹出,插入vector第一位 换种思路: 只要三次reverse即可 假设数组为{1, 2, 3, 4}, k = 1
index0123
原数组1234第一次reverse4321第二次reverse3421第三次reverse3124
代码
#include <iostream>
#include <vector>
using namespace std;
class Solution {
public:
void rotate(
vector<int>& nums,
int k) {
int len = nums.size();
k %= len;
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin() + k);
reverse(nums.begin() + k, nums.end());
}
};
int main() {
vector<int> nums = {
1,
2,
3};
Solution s;
s.rotate(nums,
2);
for (
int p : nums)
cout << p <<
" ";
cout << endl;
system(
"pause");
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-8322.html