如何改进我的代码,使其不会因超时而终止?(黑客排名挑战)
How to improve my code so that it wouldn't terminate due to timeout?(HackerRank challenge)
我的代码运行良好,但是当我在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输出到结束,从0输出到pos
你在 O(N*N( 中执行此操作,但可以在 O(N( 中完成。所以我请你通过这个 https://www.geeksforgeeks.org/array-rotation/。 如果有任何疑问,请将其注释下来。
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 黑客级别的Mini-Max Sum
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- llvm构建器向基本块添加终止符
- 如何使用隔离>终止执行来停止所有线程
- 用于将C++代码转换为 Web 程序集的脚本未终止
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 终止 QProcess 不会终止子进程
- 运行代码时,c++ 会终止进程
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 在输入句子时终止 std::out_of_range
- 二进制搜索的终止点
- MPI:检查是否有任何进程已终止
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 如何改进我的代码,使其不会因超时而终止?(黑客排名挑战)
- while 循环不以哨兵值终止
- C++ 程序不会因为内存而终止