在 C++中使用 deque 对数组进行循环旋转
给定一个整数数组 arr[] 和另一个整数 D ,任务是在数组上执行 D 圆周旋转并打印修改后的数组。
示例:
输入: Arr[] = {1,2,3,4,5,6},D = 2 T3】输出: 5 6 1 2 3 4
输入: Arr[] = {1,2,3},D = 2 T3】输出: 2 3 1
方法: 使用 C++中的 deque ,可以执行旋转,从 Deque 中删除最后一个元素,并将其插入到同一个 Deque 的开头。
同样,可以执行所有需要的旋转,然后打印修改后的 deque 的内容,以获得所需的旋转数组。
如果旋转的次数超过了德格的大小,那么就用 N 取 mod,这样, D = D%N 。 其中 D 为转数,N 为德格大小。
下面是上述方法的实现:
// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
// Function to circular rotate
// the array by d elements
void rotate(deque<int> deq,
int d, int n)
{
// Push first d elements
// from last to the beginning
for (int i = 0; i < d; i++) {
int val = deq.back();
deq.pop_back();
deq.push_front(val);
}
// Print the rotated array
for (int i = 0; i < n; i++) {
cout << deq[i] << " ";
}
cout << endl;
}
// Driver code
int main()
{
deque<int> v = { 1, 2, 3, 4, 5, 6, 7 };
int n = v.size();
int d = 5;
rotate(v, d % n, n);
}
Output:
3 4 5 6 7 1 2
版权属于:月萌API www.moonapi.com,转载请注明出处