runtime error: reference binding to null pointer of type 'int' (stl_vector.h) : LeetoCode 907
runtime error: reference binding to null pointer of type 'int' (stl_vector.h) : LeetoCode 907
我正在尝试 907.Leetcode 上的子数组最小值之和
我一直收到这个错误:
Line 1034: Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1043:9
这是我尝试过的方法(我知道这很天真,很可能会 TLE,但我也想知道哪里出了问题,所以它不起作用):-
class Solution {
public:
int sumSubarrayMins(vector<int>& arr) {
vector<int> ans;
int sum =0;
int mn=0;
int m = 1000000007;
int n = arr.size();
for(int i = 0 ; i<n; i++){
for(int j = i; j<n; j++){
for(int k = i; k<j; k++){
ans.push_back(arr[k]);
}
sort(ans.begin(), ans.end());
mn = ans[0];
sum = sum + mn;
ans.clear();
}
}
return sum%m;
}
};
发生了什么事?
在第一次迭代中,
ans
没有元素
i = 0
j = i
(j = 0
)
然后没有元素将被推送到 ans
因为 i < j
是假的。
因此,mn = ans[0];
是无效的超出范围访问,因为 ans
仍然没有元素。
我正在尝试 907.Leetcode 上的子数组最小值之和
我一直收到这个错误:
Line 1034: Char 9: runtime error: reference binding to null pointer of type 'int' (stl_vector.h)
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_vector.h:1043:9
这是我尝试过的方法(我知道这很天真,很可能会 TLE,但我也想知道哪里出了问题,所以它不起作用):-
class Solution {
public:
int sumSubarrayMins(vector<int>& arr) {
vector<int> ans;
int sum =0;
int mn=0;
int m = 1000000007;
int n = arr.size();
for(int i = 0 ; i<n; i++){
for(int j = i; j<n; j++){
for(int k = i; k<j; k++){
ans.push_back(arr[k]);
}
sort(ans.begin(), ans.end());
mn = ans[0];
sum = sum + mn;
ans.clear();
}
}
return sum%m;
}
};
发生了什么事?
在第一次迭代中,
ans
没有元素i = 0
j = i
(j = 0
)
然后没有元素将被推送到 ans
因为 i < j
是假的。
因此,mn = ans[0];
是无效的超出范围访问,因为 ans
仍然没有元素。