15.3sums leetcode java

1.题目

Given an array S of n integers, are there elements abc in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

Note: The solution set must not contain duplicate triplets.

For example, given array S = [-1, 0, 1, 2, -1, -4],

A solution set is:
[
  [-1, 0, 1],
  [-1, -1, 2]
]

给定一个n的数的数组,是否存在其中三个数相加等于0,找到所有的满足这个条件的不同三元组。

2.思路

先将数组排序,然后遍历每个数组,比如遍历到nums[i]时,将nums[i[作为结果集中的一个数字,相应地就转化成了2sum问题,就是在其后的数字中,找两个相加等于-nums[i]的数字。注意的地方是跳过相同的数字。

3.算法

错误:

class Solution {
    List> res=new  ArrayList>();
    public List> threeSum(int[] nums) {
		Arrays.sort(nums);
		for(int i=0;i0)
				end--;
			else {
				List ans=new ArrayList();
				ans.add(nums[i]);
				ans.add(nums[start]);
				ans.add(nums[end]);
				res.add(ans);
				while(start

①处也可以写成

while(i!=0&&i


你可能感兴趣的:(15.3sums leetcode java)