队列运用 数组元素循环右移问题

题解:

网上看了很多答案,感觉都是挺复杂的而且麻烦。这里我写下我自己的思路(大佬轻喷)

双端队列存储数组,如果要右移的话,只要将最后一位移动到第一位即可,移动几位,循环几次即可。

代码:

#include <bits/stdc++.h>
using namespace std;
int main() {
    deque<int> dp;
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < n; i++) {
        int a;
        cin >> a;
        dp.push_back(a);
    }
    for (int i = 0; i < m; i++) { 
        dp.push_front(dp[dp.size() - 1]); //将最后一位复制到第一位
        dp.pop_back(); //删除最后一位
    }
    for (int i = 0; i < n; i++) {
        printf("%d", dp[i]);
        if (i < n - 1) printf(" ");
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_45462923/article/details/113986305