Note:
1. K might be very very large. So remember to module it with n.
2. two range reverse (0, k-1), (k, n-1).
1 class Solution { 2 public: 3 void reverse(int nums[], int start, int end) { 4 while (start < end) { 5 [](int &a, int &b) {int t = a; a = b; b = t;}(nums[start++], nums[end--]); 6 } 7 } 8 void rotate(int nums[], int n, int k) { 9 k %= n; 10 reverse(nums, 0, n-1); 11 reverse(nums, 0, k-1); 12 reverse(nums, k, n-1); 13 } 14 };
LeetCode - Refresh - Rotate Array
原文:http://www.cnblogs.com/shuashuashua/p/4359109.html