gpt4 book ai didi

c++ - 将大整数作为 vector 中的值传递时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:03 25 4
gpt4 key购买 nike

传递大整数时出现段错误(核心已转储)。它适用于较小的输入。

long int替换了int,也尝试全局声明变量,但还是一样的错误。该函数用于执行多次右旋并返回给定索引处元素的值。这是函数:

    vector<long long int> circularArrayRotation(vector<long long int> a, long long int k, vector<long long int> queries) {
vector <long long int> b;
std::vector<long long int> result(queries.size());

b=a;
for(long long int j=0;j<k;j++)
{
for(long long int i=0;i<a.size();i++)
a[i]=b[(a.size()+i-1)%a.size()];
b=a;
}

for(long long int k=0;k<queries.size();k++)
result[k]=a[queries[k]];
for(long long int i=0;i<result.size();i++)
cout<<result[i]<<endl;

return result;

}

其余代码可以在这里找到link

最佳答案

撇开实现质量不谈(不需要复制任何拷贝来旋转 vector ,它可以就地完成),导致段错误的错误很可能是在未显示的代码中。

要进一步调试,可以使用以下链接:

如果您需要进一步的帮助,请发布您的完整代码。

== 编辑 ==

您的代码没有触发段错误,而是触发了 HackerRank 上的“因超时而终止”错误。换句话说,您的解决方案太慢了。

那是因为不需要旋转任何东西来解决Circular Array Rotation :

vector<int> circularArrayRotation(vector<int> a, int k, vector<int> queries) {
vector<int> res;
res.reserve(queries.size());
int offset = k % a.size() - a.size();
for (int i : queries) {
res.push_back(a[(i - offset) % a.size()]);
}
return res;
}

即选择请求的元素时只需考虑旋转。

关于c++ - 将大整数作为 vector 中的值传递时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56321506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com