给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。
class Solution { public: void reverse(vector<int>& nums,int start, int end){ while(start < end){ int temp = nums[start]; nums[start] = nums[end]; nums[end] = temp; start++; end--; } } void rotate(vector<int>& nums, int k) { int len = nums.size(); k = k % len; reverse(nums,0,len - 1); reverse(nums,0,k - 1); reverse(nums,k,len - 1); } };解析:将数组旋转三次、 第一次:全部旋转 第二次:从0 —— k-1 旋转 第三次:从k——len-1旋转 考虑的情况: 1.如果为空的话,对于算法没有影响 2.如果k <len需要注意,因为他其实旋转了 k - len个数所以需要取模。