LeetCode 3Sum

本文详细解析了3Sum问题的求解思路,通过排序和双指针技巧,将复杂度降至最低。首先介绍了2Sum的基础解法,进而拓展到3Sum的高效算法实现,避免重复解的同时提高查找效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:
一组数,找出所有的三个数的情况,满足 三个数相加为0

思路:
排序后,一段固定在最大的数,另一端从最小的数开始,先求和,比0大就向递增方向找下一个数,求和看是否为0
这样依次找一遍,再排除重复的情况即可。(情况太多太复杂了?)

更新思路:
看了下一题3Sum Closest 题解,发现昨天的理解不对。
求和这个题一共有四个类型,第一个是最简单的2Sum,两个数的和是目标值,很简单,就两个指针,遍历。
基于2Sum,3Sum可变为,先排序,很多题解中说“固定一个数”,刚开始没理解是固定哪个数,结合2Sum,可得出:将排序后的数组,从头开始,依次即为固定的数,例如,第一次固定arr[0],然后两个指针从arr[1],和arr[length-1]开始,类似2Sum求和检验。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值