给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。
注意:答案中不可以包含重复的三元组。
示例 1:
输入:nums = [-1,0,1,2,-1,-4]
输出:[[-1,-1,2],[-1,0,1]]
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/3sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解、三数之和为0,数据分布无规则,特殊情况,数组为null或长度小于3,直接返回空列表。
要求去重,首先排序,排序后可解决重复问题。之后遍历数组求解问题
①nums[i] > 0,则退出遍历,后面不可能有相加为0情况
②num[i] == nums[i - 1],重复数据
③正常开始,寻找三数之和,在遍历的元素后的两个端点设置指针,向内收缩,求解为0的三元素
找到为0后,继续收缩,若nums[L] = nums[L + 1],L++去重,nums[R] = nums[R - 1], R--去重
注意数组越界问题,找三数和的开始L 求和结果根据与0的关系,调整左右指针。遍历数组后,返回列表。