题目:
Rotate an array of n elements to the right by k steps.
For example, with n = 7 and k = 3, the array [1,2,3,4,5,6,7] is rotated to [5,6,7,1,2,3,4].
解答:
class Solution {
public:
void reverse(int l, int h, vector<int>* pVec) {
while(l < h) {
int tmp = (*pVec)[l];
(*pVec)[l] = (*pVec)[h];
(*pVec)[h] = tmp;
l++;
h--;
}
}
void rotate(vector<int>& nums, int k) {
if (nums.size() <= 1 || k <= 0) {
return ;
}
k = k % nums.size();
reverse(0, nums.size() - 1, &nums);
reverse(0, k - 1, &nums);
reverse(k, nums.size() - 1, &nums);
}
};