Runtime error: addition of unsigned offset
Runtime error: addition of unsigned offset
我正在解决一个关于 Leetcode(收集雨水)的问题,我编写了我的解决方案,该解决方案已经在我的本地机器以及 GeeksForGeeks 上进行了测试,它通过了所有 TC。代码是:
int trap(vector<int>& height) {
int size = height.size();
int i,units;
vector<int> l(size),r(size);
l[0] = height[0];
r[size-1] = height[size-1];
for(i=1; i<size; i++){
l[i] = max(height[i-1],l[i-1]);
}
for(i=size-1; i>=0; i--){
r[i-1] = max(r[i],height[i]);
}
for(i=0; i<size; i++){
if((min(l[i],r[i]) == 0) || (min(l[i],r[i])-height[i]<0))
continue;
else{
units +=min(l[i],r[i])-height[i];
}
}
return units;
}
这是我必须编辑的唯一部分。在 运行 之后,我收到以下错误
Line 928: Char 34: runtime error: addition of unsigned offset to 0x6040000000d0 overflowed to 0x6040000000cc (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:933:34
我需要一些帮助来找出我遇到缓冲区溢出的地方。提前干杯。
这是一个错字,应该是 i>0 而不是 i>=0。
我正在解决一个关于 Leetcode(收集雨水)的问题,我编写了我的解决方案,该解决方案已经在我的本地机器以及 GeeksForGeeks 上进行了测试,它通过了所有 TC。代码是:
int trap(vector<int>& height) {
int size = height.size();
int i,units;
vector<int> l(size),r(size);
l[0] = height[0];
r[size-1] = height[size-1];
for(i=1; i<size; i++){
l[i] = max(height[i-1],l[i-1]);
}
for(i=size-1; i>=0; i--){
r[i-1] = max(r[i],height[i]);
}
for(i=0; i<size; i++){
if((min(l[i],r[i]) == 0) || (min(l[i],r[i])-height[i]<0))
continue;
else{
units +=min(l[i],r[i])-height[i];
}
}
return units;
}
这是我必须编辑的唯一部分。在 运行 之后,我收到以下错误
Line 928: Char 34: runtime error: addition of unsigned offset to 0x6040000000d0 overflowed to 0x6040000000cc (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:933:34
我需要一些帮助来找出我遇到缓冲区溢出的地方。提前干杯。
这是一个错字,应该是 i>0 而不是 i>=0。