整理的一个算法,主要觉得前面的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);
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。