正确答案,但在效率阶段出现运行时错误
Correct answer but Runtime error at efficiency stage
我正在一个在线网站上编码。在这里,测试您的实现有不同的阶段,即编译、正确性和效率。
我正在就两个指针做一个问题。它的声明是——
给定 n 个非负整数 a1, a2, ..., an, 其中每个表示坐标 (i, ai) 处的一个点。 绘制"n"条垂直线,使得直线 i 的两个端点位于 (i, ai) 和 (i, 0)。
找到两条线,它们与 x 轴一起形成一个容器,这样容器包含的水最多。
程序应返回一个整数,该整数对应于可以包含的最大水面积
我得到了正确答案的判决,但在舞台上检查效率时出现了运行时错误。现在我有两个问题(第二个紧随第一个)-
1)在所有测试用例中给出正确答案判定时,它怎么会出现运行时错误?
2)如果真的有可能,任何人都可以帮助我找到错误或发生这种情况的可能原因吗?无论我怎么想,我都找不到:/
法典-
int finds(vector<bool> arr){
int i=0;
while(arr[i]!=0)i++;
return i;
}
int finde(vector<bool> arr){
int i=arr.size()-1;
while(arr[i]!=0)i--;
return i;
}
struct st{
int data;
int index;
};
int Solution::maxArea(vector<int> &A) {
// Do not write main() function.
// Do not read input, instead use the arguments to the function.
// Do not print the output, instead return values as specified
// Still have a doubt. Checkout www.interviewbit.com/pages/sample_codes/ for more details
int n=A.size(),ans=0;
vector<bool> visited(n,0);
int start=0,end=n-1;
if(n<=1)return 0;
vector<st> arr;
st temp;
for(int i=0;i<n;i++){
temp.data=A[i];
temp.index=i;
arr.push_back(temp);
}
sort(arr.begin(),arr.end(),[](st a,st b)->bool{return a.data<=b.data;});
for(int i=0;i<n-1;i++){
// cout<<start<<"t"<<end<<endl;
ans=max(ans,arr[i].data*(arr[i].index-start));
ans=max(ans,arr[i].data*(end-arr[i].index));
visited[arr[i].index]=true;
start=finds(visited);
end=finde(visited);
//cout<<"answers is "<<ans<<endl;
}
return ans;
}
错误-
Runtime Error. Your submission stopped because of a runtime error. ex: division by zero, array index out of bounds, uncaught exception You can try testing your code with custom input and try putting debug statements in your code.
*** Error in `./solution': munmap_chunk(): invalid pointer: 0x00000000026227c0 ***
Aborted
不确定这是您的问题,但可能是个问题
在maxArea()
你对std::vector
arr
进行排序
sort(arr.begin(),arr.end(),[](st a,st b)->bool{return a.data<=b.data;});
这很危险。
尝试使用"更少">而不是"更少或等于";我的意思是
a.data < b.data;
而不是
a.data <= b.data;
问题是std::sort()
要求比较函数(称之为comp()
)诱导一个严格的弱排序关系。
因此,要求comp(a, a)
永远是假的,并且comp(a, b) == true
暗示comp(b, a) == false
。
您的(原始)lambda 函数不满足此要求。
相关文章:
- 我是如何在这段代码中出现分段错误的
- 为什么PyImport_ImportModule python 3.7.2 中出现段错误?
- 全局向量导致 C++ 程序结束时出现段错误
- 使用同一类中的方法重新分配字段时出现问题
- 当我返回指向结构的指针向量时出现段错误
- 为什么我的 LLVM JIT 实现出现段错误?
- 为什么访问我的引用捕获变量会导致我的 lambda 函数出现段错误?
- 为什么我在尝试将数组中的值写入 CSV 文件中时会出现段错误
- 正确答案,但在效率阶段出现运行时错误
- 我的开关菜单在一段时间循环中出现问题
- 给定代码段中引用的时间和空间位置的所有出现
- 委托构造函数在使用类字段进行参数时会出现分段错误
- 导致IAR ARM中出现错误的成员结构位字段元素的Initializer列表初始化
- 将 [] 索引到无序映射时出现段错误
- 尝试从Octave的独立程序示例中编译示例代码,在第一行出现段错误
- 尝试实例化 QWidget 时 QT 程序出现段错误
- 将新的 PyObject * 从 C++ 返回给 Python 最终会出现段错误
- libsndfile 在使用 sf_open_fd() 时总是出现段错误
- 从链表的第一个节点中删除时出现段错误
- 为什么这段代码会出现运行时分段错误