leetcode中如何解决三数之和问题
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下leetcode中如何解决三数之和问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目链接https:
千家信息网最后更新 2026年11月01日leetcode中如何解决三数之和问题
小编给大家分享一下leetcode中如何解决三数之和问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
题目链接
https://leetcode-cn.com/problems/3sum/
题目描述
给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
注意:答案中不可以包含重复的三元组。
例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],
满足要求的三元组集合为:
[
[-1, 0, 1],
[-1, -1, 2]
]
解题方案
思路
标签:数组遍历
首先对数组进行排序,排序后固定一个数nums[i],再使用左右指针指向nums[i]后面的两端,数字分别为nums[L]和nums[R],计算三个数的和sum判断是否满足为0,满足则添加进结果集
如果nums[i]大于0,则三数之和必然无法等于0,结束循环
如果nums[i] == nums[i-1],则说明该数字重复,会导致结果重复,所以应该跳过
当sum == 0时,nums[L] == nums[L+1]则会导致结果重复,应该跳过,L++
当sum == 0时,nums[R] == nums[R-1]则会导致结果重复,应该跳过,R--
时间复杂度:O(n^2),n为数组长度
代码
Java版本
class Solution {
public static List> threeSum(int[] nums) {
List> ans = new ArrayList();
Arrays.sort(nums); // 排序
int len = nums.length;
if(nums == null || len < 3) return ans;
for (int i = 0; i < len ; i++) {
if(nums[i] > 0) break; // 如果当前数字大于0,则三数之和一定大于0,所以结束循环
if(i > 0 && nums[i] == nums[i-1]) continue; // 去重
int L = i+1;
int R = len-1;
while(L < R){
int sum = nums[i] + nums[L] + nums[R];
if(sum == 0){
ans.add(Arrays.asList(nums[i],nums[L],nums[R]));
while (L while (L L++;
R--;
}
else if (sum < 0) L++;
else if (sum > 0) R--;
}
}
return ans;
}
}
JavaScript版本
/**
* @param {number[]} nums
* @return {number[][]}
*/
var threeSum = function(nums) {
let ans = [];
nums.sort((a, b) => a - b); // 排序
const len = nums.length;
if(nums == null || len < 3) return ans;
for (let i = 0; i < len ; i++) {
if(nums[i] > 0) break; // 如果当前数字大于0,则三数之和一定大于0,所以结束循环
if(i > 0 && nums[i] == nums[i-1]) continue; // 去重
let L = i+1;
let R = len-1;
while(L < R){
const sum = nums[i] + nums[L] + nums[R];
if(sum == 0){
ans.push([nums[i],nums[L],nums[R]]);
while (L while (L L++;
R--;
}
else if (sum < 0) L++;
else if (sum > 0) R--;
}
}
return ans;
};
画解


以上是"leetcode中如何解决三数之和问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
之和
数组
数字
结果
排序
篇文章
三元
循环
问题
个数
内容
版本
题目
复杂
三个
不怎么
两端
代码
元素
复杂度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技公司
蓝思科技飞鸽互联网
新华互联网科技学校
科技互联网公司装修
深圳互联网络科技有限公司
四川狮子座互联网科技
互联网科技公司做什么
互联网金融监管科技
深圳互联网科技怎么样
互联网科技公司的市场部门
互联网企业和科技型企业
互联网与医疗科技
允成互联网科技有限公司融资
威龙国际互联网科技公司
世界互联网领先科技成果获奖
科技互联网的核心竞争力
小米互联网科技园入驻
上海互联网科技公司ppt
互联网科技企业商标注意事项
数字互联网科技有限公司
咖啡豆
南京欣网互联网络科技有限公司
互联网金融科技平台
睿民互联网科技
上海亿帐通互联网科技
阿里巴巴算科技企业还是互联网
宝灵互联网科技有限公司
青海科技产业互联网发展
云南互联网科技学费
北京军民互联网科技公司