c++ - 如何改进我的代码,使其不会因超时而终止?(HackerRank 挑战)
问题描述
我的代码运行良好,但是当我在 HackerRank 上提交它时,它会在少数情况下显示“您的代码没有在时间限制内执行”的错误,而在其余情况下会显示“成功”的错误。这是 HackerRank 挑战的链接以及代码需要做什么: https://www.hackerrank.com/challenges/circular-array-rotation/problem 这是我的代码:
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
int n, k, q, count=0, index;
cin>>n>>k>>q;
int ar[n];
for (int i = 0; i < n; i++)
{
cin>>ar[i];
}
int m[q];
for (int i = 0; i < q; i++)
{
cin>>m[i];
}
while (count != k)
{
for (int i = n-1; i > 0; i--)
{
swap(ar[i],ar[i-1]);
}
count++;
}
for (int i = 0; i < q; i++)
{
index=m[i];
cout<<ar[index]<<endl;
}
return 0;
}
解决方案
如何考虑将数组的起点设置为一个变量,并计算这个变量以避免循环。可能有很多循环或int ar [n](我不知道oj是否支持)。解决方案可能喜欢:
for(...){
++pos;
if (pos == k) pos = 0;
}
所以你应该做的是将数组从 pos 输出到 end,从 0 输出到 pos
推荐阅读
- python - 在 Anaconda、Python、Jupyter 中使用 pip 或 pip3 安装包
- javascript - 如何复制事件监听器附加的匿名函数?
- python - 如何通过尝试捕获 ConnectionError 最大重试次数
- javascript - redux 渲染数据的方式在我的沙箱中不成功
- javascript - nodejs一个接一个地运行异步函数
- git - 新的存储库在bitbucket上工作,但是github上有问题
- android - AdMob 实时广告不显示
- php - 带有特殊字符的 MYSQL 全文搜索问题
- python-3.x - 用分隔符在一行上打印列表的最佳方法是什么?
- c++ - 更改请求协议 restsdk