整理的一个算法,主要以为前面的reverse函数比较厉害,非原创:
算法的思想就是翻转两部分,而后总体翻转,这两步能够颠倒:算法
class Solution { public: void reverse(int* a, int* b) { while (--b > a) { *b ^= *a; *a ^= *b; *b ^= *a; ++a; } } void rotate(int arr[], int n, int k) { int p = k%n; reverse(arr, arr+n); reverse(arr, arr+p); reverse(arr+p, arr+n); } };