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 };

 

posted on 2015-03-23 10:37  keepshuatishuati  阅读(114)  评论(0编辑  收藏  举报