轮转数组
轮转数组(Rotate Array) 题目描述:给定一个数组,将数组向右轮转 k 个位置。 示例: 输入:nums = [1,2,3,4,5,6,7], k = 3 输出:[5,6,7,1,2,3,4]
void reverseArray(int a[], const int n, const int start, const int end)
{
if (n <= 0 || start < 0 || end <= 0 || start >= end || end >= n)
return;
int left = start;
int right = end;
while (left < right)
{
int temp = a[right];
a[right] = a[left];
a[left] = temp;
left++;
right--;
}
}
int main()
{
int a1[] = {1, 2, 3, 4, 5, 6, 7};
const int arr1Size = sizeof(a1) / sizeof(int);
const int k = 3;
for (int i = 0; i < arr1Size; i++)
{
printf("%d ", a1[i]);
}
printf("\n");
reverseArray(a1, arr1Size, 0, arr1Size - 1);
reverseArray(a1, arr1Size, 0, k - 1);
reverseArray(a1, arr1Size, k, arr1Size - 1);
for (int i = 0; i < arr1Size; i++)
{
printf("%d ", a1[i]);
}
printf("\n");
return 0;
}
