📌  相关文章
📜  将包含 n 个元素的数组向右旋转 k 步 - C++ (1)

📅  最后修改于: 2023-12-03 14:53:48.243000             🧑  作者: Mango

将包含 n 个元素的数组向右旋转 k 步 - C++

在程序中,我们经常需要对数组进行操作。有时,我们需要将数组向右旋转 k 步,即将数组的每个元素向右移动 k 个位置。

为了实现这个目标,我们可以使用一些循环和算法技巧来操作数组。下面是一个 C++ 程序,它可以将包含 n 个元素的数组向右旋转 k 步。

void rotate(vector<int>& nums, int k) {
    k = k % nums.size();
    reverse(nums.begin(), nums.end());
    reverse(nums.begin(), nums.begin() + k);
    reverse(nums.begin() + k, nums.end());
}

这个程序使用了 reverse() 函数来反转数组中的元素。首先,我们对整个数组进行反转操作,然后再将前 k 个元素和后面的元素分别进行反转。最后,我们就可以得到一个将数组向右旋转 k 步后的新数组。

这个算法的时间复杂度是 O(n),其中 n 是数组中的元素个数。由于我们只使用了常数级别的额外空间,因此这个算法的空间复杂度是 O(1)。

总之,将数组向右旋转 k 步是一个常见的编程问题。借助 C++ 的一些算法技巧,我们可以很容易地实现这个操作。