要求时间复杂度为O(1)
翻转三次,K=3
例
将[0,1,2,3,4,5,6,7,8]
翻转成[6,7,8,0,1,2,3,4,5]
先将下标为N-K到N-1的数翻转,下标为0到N-K-1的数翻转
再将整个数组翻转
//定义反转函数
void Flip(int* arr, int left, int right)
{
while (left < right)
{
int temp = 0;
temp = arr[left];
arr[left] = arr[right];
arr[right] = temp;
left++;
right--;
}
}
int main()
{
int arr[9] = { 0,1,2,3,4,5,6,7,8 };
Flip(arr, 6, 8);
Flip(arr, 0, 5);
Flip(arr, 0, 8);
int i = 0;
for (i = 0; i < 9; i++)
{
printf("%d ", arr[i]);
}
return 0;
}