轮转数组
轮转数组(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; }