虽然我能够通过定制的测试用例,但当我提交时,它显示了运行时错误。这是代码
int peakIndexInMountainArray(vector<int>& arr) {
int s=0;
int e=arr.size()-1;
int m=s+(e-s)/2;
while(s<=e){
if(arr[m-1]<arr[m] && arr[m]>arr[m+1]){
return m;
}
else if(arr[m]<arr[m+1]){
s=m+1;
}
else{
e=m-1;
}
m=s+(e-s)/2;
}
return -1;
}最后执行的显示错误的输出- 3,5,3,2,0
错误声明-
Line 1034: Char 34: runtime error: addition of unsigned offset to 0x6030000002b0 overflowed to 0x6030000002ac (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1043:34我需要帮助找出代码中的确切错误。
发布于 2022-06-14 07:21:14
对于s=e一案,您有m=s=arr.size()-1当且仅当您现在访问arr[m+1],您是越界的。
https://stackoverflow.com/questions/72612900
复制相似问题