📜  在 C++ 中使用 deque 对数组进行循环旋转

📅  最后修改于: 2022-05-13 01:57:47.834000             🧑  作者: Mango

在 C++ 中使用 deque 对数组进行循环旋转

给定一个整数数组arr[]和另一个整数D ,任务是对数组执行D循环旋转并打印修改后的数组。

例子:

方法:
使用 C++ 中的 Deque,可以执行旋转,从 deque 中删除最后一个元素并将其插入到同一个 deque 的开头。

同样,可以执行所有需要的旋转,然后打印修改后的双端队列的内容,以获得所需的旋转数组。

如果旋转次数大于双端队列的大小,则只需使用带有N的 mod,因此, D = D%N
其中D是旋转次数,N 是双端队列的大小。

下面是上述方法的实现:

// C++ implementation of the approach
#include 
using namespace std;
  
// Function to circular rotate
// the array by d elements
void rotate(deque 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 v = { 1, 2, 3, 4, 5, 6, 7 };
    int n = v.size();
    int d = 5;
  
    rotate(v, d % n, n);
}
输出:
3 4 5 6 7 1 2