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]
.
Note:
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
思路:将数组中的所有元素值循环移动k步,注意循环的步数并没有说一定小于n!!!!
自己代码:
void rotate(vector<int>& nums, int k) { vector<int>temp; for(int i = nums.size()-k%nums.size(); i < nums.size(); i++) temp.push_back(nums[i]); for(int i = 0; i < nums.size()-k%nums.size(); i++) temp.push_back(nums[i]); nums = temp; }
最后的两个vector之间可以直接赋值。