整理的一個算法,主要以爲前面的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); } };