📅  最后修改于: 2023-12-03 15:15:15.569000             🧑  作者: Mango
循环数组旋转是一个常见的算法问题,其目的是将一个包含n个元素的数组向右旋转k个元素,其中n和k是非负整数。例如,将数组[1,2,3,4,5,6,7]向右旋转3个元素,结果为[5,6,7,1,2,3,4]。
在C++中,我们可以使用以下算法将数组旋转k个元素:
void rotate(vector<int>& nums, int k) {
int n = nums.size();
k %= n;
// 反转整个数组
reverse(nums.begin(), nums.end());
// 反转前k个元素
reverse(nums.begin(), nums.begin() + k);
// 反转从k开始到末尾的元素
reverse(nums.begin() + k, nums.end());
}
以上是C++中循环数组旋转的算法。其时间复杂度为O(n),空间复杂度为O(1)。通过此算法,程序员可以在O(n)时间内向右旋转数组中的元素。