可以采用队列的出入完成,但是不太优雅
可以将数组整个翻转比如,123456翻转变成654321,这样前面的数就到了后面,这时我们再取一个中间线即k % nums.size()
,把中间线两边的数组分别进行翻转即可
class Solution {
public:
void rotate(vector<int>& nums, int k) {
reverse(nums.begin(), nums.end());
int n = k % nums.size();
reverse(nums.begin(), nums.begin() + n);
reverse(nums.begin() + n, nums.end());
}
};