标签:
问题描述:
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.
方法一:将数组分为两个部分,先计算往前挪动的元素的位置,再将剩下的元素计算位置,注意数组下标是从‘0’开始的;
class Solution { public: void rotate(int nums[], int n, int k) { int b[n]; if(k>n) k %=n; for(int i = 0;i < k;i++) b[i] = nums[n-k+i]; for(int j = k;j<n;j++) b[j] = nums[j-k]; for(int i=0;i<n;i++) nums[i] = b[i]; } };
标签:
原文地址:http://www.cnblogs.com/chdxiaoming/p/4380341.html