【问题标题】:Why is it showing Run-time error in 3Sum problem on LeetCode?为什么在 LeetCode 的 3Sum 问题中显示运行时错误?
【发布时间】:2021-07-30 10:30:15
【问题描述】:

我在 leetcode 上解决了这个 3Sum 问题。该问题指出: 给定一个整数数组 nums,返回所有三元组 [nums[i], nums[j], nums[k]] 使得 i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0。

注意解集不能包含重复的三元组。

我编写的这个解决方案是:

class Solution {
public:
    vector<vector<int>> threeSum(vector<int>& nums) {
        
        
        vector<vector<int>> arr;
         
        sort(nums.begin(),nums.end());
        for(int i=0;i<(nums.size())-2;i++)
        {
            if(i==0 || (i>0 && nums[i]!=nums[i-1]))
            {
                int low,high,sum;
                low=i+1;
                high=nums.size()-1;
                sum=0-nums[i];
                while(low<high)
                {
                    int a=nums[low]+nums[high];
                    if(a== sum)
                    {
                        vector<int> p;
                        p.push_back(nums[i]);
                        p.push_back(nums[low]);
                        p.push_back(nums[high]);
                        arr.push_back(p);
                        while(low<high && nums[low]==nums[low+1])
                            low++;
                        while(low<high && nums[high]==nums[high-1])
                            high--;
                        low++;
                        high--;
                    }
                    else if(a>sum)
                        high--;
                    else
                        low++;
                }
            }            
        }
        return arr;
    }};

但是当给定向量的大小小于 3 时,它会显示基本条件的运行时错误。此外,for 循环的设计方式使其不会在基本条件下运行,即向量大小更小大于 3。

谁能告诉它为什么会显示这样的错误?

【问题讨论】:

    标签: c++


    【解决方案1】:

    nums.size() 返回一个无符号整数,因此当nums.size() 小于 2 时,(nums.size())-2 将是一个较大的值。

    您应该使用static_cast&lt;int&gt;(nums.size())-2 而不是(nums.size())-2static_cast&lt;int&gt;(nums.size())-1 而不是nums.size()-1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-18
      • 2022-11-04
      • 2022-01-23
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多