试图弄清楚为什么我在leetcode上遇到了运行时错误?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试图弄清楚为什么我在leetcode上遇到了运行时错误?相关的知识,希望对你有一定的参考价值。
这是相交数组的代码。似乎适用于大多数情况,直到nums1 = [1]nums2 = [1,1]
class Solution {
public:
vector<int> intersect(vector<int>& nums1, vector<int>& nums2) {
vector<int> temp;
int i = 0;
int j = 0;
for (i = 0; i < nums1.size(); i++) {
for (j = 0; j < nums2.size(); j++) {
if ( (nums1.size() == nums2.size()) && (nums1[i] < nums1.size() - 1) ) {
if (nums1[i] == nums2[j])
temp.push_back(nums1[i]);
}
else if ( (nums1[i] == nums2[j]) && (i < nums1.size()) ) {
temp.push_back(nums1[i]);
i++;
}
}
}
return temp;
}
};
当i = 1时,我得到了错误,但条件是(nums1 [i] == nums2 [j])&&(i
答案
您的支票顺序错误。您需要检查i
是否为有效索引之前索引,如下所示:
else if ( (i < nums1.size()) && (nums1[i] == nums2[j]) ) {
否则,您将调用未定义的行为(这可能会导致运行时错误)。类似地,在所有情况下,您都索引到向量中时,都需要确保索引是有效的。
以上是关于试图弄清楚为什么我在leetcode上遇到了运行时错误?的主要内容,如果未能解决你的问题,请参考以下文章
我在将arduino网络中实现Atmega328计时器时遇到问题
我在 Oracle Apex ORA-00907 上遇到错误:缺少右括号