我在给定的数组中做了一个简单的整数旋转程序。
#include <iostream>
using namespace std;
int main()
{
int t;
cin>>t;
long i,j,n,k,l,m,x;
long a[1000000];
for(i=0;i<t;i++){
cin>>n;
cin>>k;
for(j=0;j<n;j++){
cin>>a[j];
}
for(m=0;m<k;m++){
x=a[0];
for(j=1;j<n;j++){
x=a[j]+x;
a[j]=x-a[j];
x=x-a[j];
}
a[0]=x;
}
for(j=0;j<n;j++){
cout<<a[j]<<" ";
}
cout<<endl;
}
return 0;
}
可以找到问题here。我的代码很容易处理小输入,但是当输入达到数千个数量级时,它会花费超过一秒钟,并且由于这个原因而失败。有关如何解决这个问题的任何建议?
答案 0 :(得分:0)
可以用来加快速度的一些注意事项:
这些可用于将您的O(N ^ 2)解决方案变为O(N)解决方案。