在Leetcode上运行以下代码时,我遇到了运行时错误。当我删除用户定义的比较函数时,它可以正常工作。但使用用户定义的比较函数时,会出现以下运行时错误:
“在第924行,第9个字符处:运行时错误:引用绑定到空指针类型为'int'的指针(stl_vector.h)总结:UndefinedBehaviorSanitizer: 未定义行为 /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:933:9”
class Solution {
private:
static bool comp (vector<int> p1, vector<int> p2) {
if(p1[0] < p2[0] || p1[1] < p2[1])
return true;
else
return false;
}
public:
int maxEnvelopes(vector<vector<int>>& envelopes) {
if (envelopes.empty())
return 0;
sort(envelopes.begin(), envelopes.end(), comp);
vector<int> dp(envelopes.size(), 1);
int res = 0;
for (int i = 0; i < envelopes.size(); i++) {
for (int j = i-1; j >=0; j--) {
if (envelopes[j][0] < envelopes[i][0] && envelopes[j][1] < envelopes[i][1] && dp[j] + 1 > dp[i])
dp[i] = 1 + dp[j];
}
res = max(res, dp[i]);
}
return res;
}
};