You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

优化版四数之和(4Sum)代码提交LeetCode遇运行时错误(Runtime Error)求助

优化版四数之和(4Sum)代码提交LeetCode遇运行时错误(Runtime Error)求助

大家好,我最近在解决四数之和的问题——给定一个整数数组和一个目标值,需要返回所有和等于目标值的不重复四元组。我在本地机器和几个在线编译器上测试了多个用例,结果都正确,但提交到LeetCode时,有一个特定的测试用例总是抛出运行时错误,我实在找不到问题所在,想请各位帮忙分析一下。

出问题的测试用例

输入:
4
0 0 0 0
1
预期输出:空数组(空的二维vector)

我本地运行这个用例时能得到正确的空结果,但LeetCode提交就报错,以下是我的完整代码:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std ;

vector<vector<int>> four_sum(vector<int> &nums, int target)
{
// sorting the vector
sort(nums.begin(),nums.end()) ;

int len = nums.size() ;

if (len < 4)
{
return {} ;
}

cout<<"Sorted Array is: "<<endl ;
for (int i = 0; i < len; i++)
{
cout<<nums[i]<<" " ;
}
cout<<endl ;

vector<int> temp ;
vector<vector<int>> ans ;

int sum = 0, curr_sum = 0 ;
int i = 0, j = len-1 ;

// a + b + c + d = target
while (i < j)
{
if (i == 0 or j == len or (i > 0 and nums[i] != nums[i-1]) or (j < len and nums[j] != nums[j+1]))
{
sum = nums[i] + nums[j] ;
int lo = i + 1, hi = j - 1 ;

while (lo < hi)
{
if (nums[lo] + nums[hi] + sum == target)
{
temp.push_back(nums[i]) ;
temp.push_back(nums[lo]) ;
temp.push_back(nums[hi]) ;
temp.push_back(nums[j]) ;
ans.push_back(temp) ;
temp.clear() ;
curr_sum = target ;

while (lo < hi and nums[lo] == nums[lo + 1])
{
lo++ ;
}
while (lo < hi and nums[hi] == nums[hi - 1])
{
hi-- ;
}

lo++ ;
hi-- ;
}
else if (sum + nums[lo] + nums[hi] < target)
{
curr_sum = sum + nums[lo] + nums[hi] ;
lo++ ;
}
else
{
curr_sum = sum + nums[lo] + nums[hi] ;
hi-- ;
}
}
}

if (curr_sum < target)
{
i++ ;
}
else if (curr_sum == target)
{
i++ ;
j-- ;
}
else
{
j-- ;
}
}

return ans ;
}

int main()
{
int n, x ;
cin>>n ;
vector<int> nums ;

while (n--)
{
cin>>x ;
nums.push_back(x) ;
}

int target ;
cin>>target ;

vector<vector<int>> ans = four_sum(nums,target) ;

cout<<"Ans: "<<endl ;
for (int i = 0; i < ans.size(); i++)
{
for (int j = 0; j < ans[i].size(); j++)
{
cout<<ans[i][j]<<" " ;
}
cout<<endl ;
}

return 0 ;
}

我已经检查了数组长度不足4的边界情况,也做了去重处理,但还是搞不懂为什么这个测试用例会在LeetCode上触发运行时错误,希望大家能帮我找出问题点!

备注:内容来源于stack exchange,提问作者Kartikey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:20:27