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.
Try to come up as many solutions as you can, there are at least 3 different ways to solve this problem.
class Solution { void rotateHelper(int A[], int k, int n) { int i = 0; while(i + k < n) { int count = 0; for(; i+k < n; i++) { int t = A[i]; A[i] = A[i+k]; A[i+k] = t; count++; } k = k - count % k; } } public: /** * param A: A string * param offset: Rotate string with offset. * return: Rotated string. */ void rotate(int A[], int n, int k) { if (n < 2) return ; int K = n - k % n; rotateHelper(A, K, n); } };
No comments:
Post a Comment