美文网首页
LeetCode-第十五题:3Sum

LeetCode-第十五题:3Sum

作者: baixiaoshuai | 来源:发表于2018-10-16 15:47 被阅读0次

题目

题目

分析

源码

public class Solution 
{
    public List<List<Integer>> threeSum(int[] nums) 
    {
        List<List<Integer>> result=new ArrayList<>();
        Arrays.sort(nums);
        int len=nums.length;
        if(len<3)
        {
            return result;
        }
        for(int i=0;i<len-2;i++)
        {
            if(nums[i]>0)
            {
                break;
            }
            if(i>0 && nums[i]==nums[i-1])
            {
                continue;
            }
            int target=-nums[i];
            int j=i+1;int m=len-1;
            while(j<m)
            {
                if(nums[j]+nums[m]==target)
                {
                    List<Integer> list=new ArrayList<>();
                    list.add(nums[i]);
                    list.add(nums[j]);
                    list.add(nums[m]);
                    result.add(list);
                    j++;
                    m--;
                    while (j<m && nums[j]==nums[j-1])
                    {
                        j++;
                    }
                    while (j<m && nums[m]==nums[m+1])
                    {
                        m--;
                    }
                }
                else if(nums[j]+nums[m]<target)
                {
                    j++;
                    while (j<m && nums[j]==nums[j-1])
                    {
                        j++;
                    }
                }
                else
                {
                    m--;
                    while (j<m && nums[m]==nums[m+1])
                    {
                        m--;
                    }
                }
            }   
        }
        return result;
    }
}

相关文章

网友评论

      本文标题:LeetCode-第十五题:3Sum

      本文链接:https://www.haomeiwen.com/subject/qddpxxtx.html