轮转数组

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

全部评论

相关推荐

04-10 09:20
已编辑
新余学院 C++
小公司 工具链开发工程师 10k*14 本科其他
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务