轮转数组–极简代码
题目描述
- 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
代码
三个reverse
- 举个例子:
- array={1, 2, 3, 4, 5}, k=3
1、k = k%nums.size()=3
2、将1,2,3反转为3,2,1
3、将4,5反转为5,4.
4、现在的数组:3,2,1,5,4
5、再反转一次:4,5,1,2,3,结束
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());
}
};