【发布时间】:2020-06-27 08:08:22
【问题描述】:
如何降低这段代码的时间复杂度,这不是在时间内执行
来自hackerrank的确切问题--
在下面的编辑器中完成 circularArrayRotation 函数。 它应该返回一个整数数组,表示指定索引处的值。
circularArrayRotation 具有以下参数:
a:要旋转的整数数组
k:整数,旋转次数
查询:整数数组,要报告的索引
vector<int> circularArrayRotation(vector<int> a, int k, vector<int> queries) {
int i,temp;
vector<int> ans;
//to perform number of queries k
while(k--)
{ //shift last element to first pos and then move rest of elements to 1 postion forward
temp=a[a.size()-1]; //last element
for(i=a.size()-1;i>0;i--)
{
a[i]=a[i-1];
}
a[0]=temp;
}
for(i=0;i<queries.size();i++)
{
ans.push_back(a[queries[i]]);
}
return ans;
}
【问题讨论】:
-
在编写任何代码之前,您需要先获得正确的算法。
-
你应该解释到底是什么问题
-
@Damien 问题是..我必须将向量 a k 次旋转,然后返回向量 a 的第 i 个位置的值,并且 i 属于向量查询,简而言之,向量查询包含元素的位置(索引值)。对于每个索引值,我必须显示(或存储在另一个向量中)向量 a 中旋转 k 次的对应值
标签: c++ arrays algorithm sorting time-complexity