轮转数组

又是一道408原题,非常简单。

题目描述

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
public:
void reverse(int a,int b,vector<int>& nums){
while(a<b){
swap(nums[a],nums[b]);
a++;
b--;
}
}
void rotate(vector<int>& nums, int k) {
if(k>nums.size()) k%=nums.size();
reverse(0,nums.size()-1,nums);
reverse(0,k-1,nums);
reverse(k,nums.size()-1,nums);
}
};