一个长度为n的整形数组,将其循环右移k位。要求时间复杂度为O(n),空间复杂度为O(1)。
void reverse(int a[], int left, int right)
{
while (left < right)
{
swap(a[left], a[right]);
left++;
right--;
}
}
void fun(int a[], int n, int k)
{
k %= n;
reverse(a, 0, n-k-1);
reverse(a, n-k, n-1);
reverse(a, 0, n-1);
}