题解:
网上看了很多答案,感觉都是挺复杂的而且麻烦。这里我写下我自己的思路(大佬轻喷)
用双端队列存储数组,如果要右移的话,只要将最后一位移动到第一位即可,移动几位,循环几次即可。
代码:
#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;
}