1.标题
给你一个包罗 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]]
示例 2:
输入:nums = []
输出:[]
示例 3:
输入:nums = [0]
输出:[]
提示:
0 <= nums.length <= 3000
-105 <= nums <= 105
2.解题思绪
- 方法一:排序 + 双指针
标签:数组遍历
起首对数组举行排序,排序后固定一个数nums[i,再利用左右指针指向numsi背面的两端,数字分
别为nms[L]和nums[R],盘算三个数的和sum判断是否满意为O,满意则添加进结果集
假如nums[i大于0,则三数之和一定无法即是0,竣事循环
假如nums[i=nums[i-1],则阐明该数字重复,会导致结果重复,以是应该跳过
当sum=0时,nums[L]==numsL+1]则会导致结果重复,应该跳过,L++
当sum=0时,numsR=nums[R-1]则会导致结果重复,应该跳过,R--
时间复杂度:O(n2),n为数组长度
3.代码 |