📅  最后修改于: 2023-12-03 15:07:37.868000             🧑  作者: Mango
在 C++ 中,我们可以通过一些简单的代码来实现旋转操作。旋转操作是指将数组或者向量中的元素按照给定的规则进行移动。常见的旋转规则包括向左或向右移动 k 个位置。下面我们将介绍如何在 C++ 中对数组和向量进行旋转操作。
给定一个数组 nums,将数组中的元素向右移动 k 个位置。
我们可以使用另一个数组来存储旋转后的结果。具体操作如下:
下面是代码实现:
void rotate(vector<int>& nums, int k) {
vector<int> result(nums.size());
for (int i = 0; i < nums.size(); i++) {
result[(i + k) % nums.size()] = nums[i];
}
for (int i = 0; i < nums.size(); i++) {
nums[i] = result[i];
}
}
我们也可以使用反转来实现旋转。具体操作如下:
下面是代码实现:
void rotate(vector<int>& nums, int k) {
k %= nums.size();
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin()+k);
reverse(nums.begin()+k, nums.end());
}
给定一个 STL 向量,将向量中的元素向右移动 k 个位置。
我们可以使用另一个向量来存储旋转后的结果。具体操作如下:
下面是代码实现:
void rotate(vector<int>& nums, int k) {
vector<int> result(nums.size());
for (int i = 0; i < nums.size(); i++) {
result[(i + k) % nums.size()] = nums[i];
}
nums = result;
}
我们也可以使用反转来实现旋转。具体操作如下:
下面是代码实现:
void rotate(vector<int>& nums, int k) {
k %= nums.size();
reverse(nums.begin(), nums.end());
reverse(nums.begin(), nums.begin()+k);
reverse(nums.begin()+k, nums.end());
}
以上就是在 C++ 中旋转数组和向量的两种方法。如果您有更好的解法或者任何疑问和建议,请随时在评论区留言。