试图弄清楚为什么我在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计时器时遇到问题

试图弄清楚 Core Audio 的 NBandEQ

我在 Oracle Apex ORA-00907 上遇到错误:缺少右括号

试图弄清楚为啥 NewID 函数停止在 Oracle 上工作

应用程序在启动时立即崩溃,仅在设备上

弄清楚一个 cuda 内核有多少块和线程,以及如何使用它们