题意:旋转数组?给出n个元素的数组,往右平移k个单位。求旋转后的数组。
题解:巧妙的做法,把1到 n - k 元素先翻转,把n - k + 1 到 n 元素翻转。然后翻转整个数组就可以。不懂的可以自己拿纸画一画。
class Solution {
public:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
k = k % n;
reverse(nums.begin(),nums.begin() + n - k);
reverse(nums.begin() + n - k,nums.begin() + n);
reverse(nums.begin(),nums.begin() + n);
}
};