Middle-题目121:15. 3Sum

原创 2016年05月31日 20:11:33

题目原文:
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
题目大意:
给出一个数组s,求三元组(a,b,c),其中a,b,c∈s且a+b+c=0。
题目分析:
典型的ksum问题,不求原数组下标,所以排序后固定一个指针即可。
源码:(language:java)

public class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        Arrays.sort(nums);
        List<List<Integer>> list = new LinkedList<List<Integer>>();
        for(int i = 0;i<nums.length-2;i++) {
            if(i>0 && nums[i]==nums[i-1]) 
                continue;
            int j=i+1,k=nums.length-1;
            while(j<k) {
                if(j>i+1 && nums[j]==nums[j-1]) {
                    j++;
                    continue;
                }
                if(k<nums.length-1&&nums[k]==nums[k+1]) {
                    k--;
                    continue;
                }
                int sum = nums[i]+nums[j]+nums[k];
                if(sum==0) {
                    List<Integer> sublist = new LinkedList<Integer>();
                    sublist.add(nums[i]);
                    sublist.add(nums[j]);
                    sublist.add(nums[k]);
                    list.add(sublist);
                    j++;
                }
                else if(sum>0) {
                    k--;
                }
                else {
                    j++;
                }

            }
        }
        return list;
    }
}

成绩:
9ms,beats 34.07%,众数8ms,31.75%
Cmershen的碎碎念:
本题解决了重复数字的问题,确保解集中没有重复元素。但同样的去重逻辑放到4sum题里不知道为什么就不行。。。。。。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

类型系列题目:1. Two Sum 15,3 sum ,16 3sum closet, 18 4sum, 454 4Sum II

Given an array of integers, return indices of the two numbers such that they add up to a specific ta...

[LeetCode][15]3Sum解析与快速排序算法-Java实现

Q: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? F...

【一天一道LeetCode】#15 3Sum

一天一道LeetCode系列(一)题目 Given an array S of n integers, are there elements a, b, c in S such that a + ...

LeetCode(15)--3Sum

题目:找到一组数字中,三个数之和为0的所有数。值得注意的就是不能有重复的组合。 思路: 如果是暴利搜索肯定会超时,所以首先对原数组进行排序,然后开始遍历排序后的数组,这里注意不是遍历到最后一个停止...

Leetcode 15. 3Sum (Medium) (java)

Leetcode 15. 3Sum (Medium) (java)
  • Niko_Ke
  • Niko_Ke
  • 2016年09月22日 05:40
  • 277

LeetCode之15----3Sum

题目: Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find...

leetcode15:3Sum

3Sum 我觉得做算法题,一般在不能一下子给出最终的解得时候,应该循序渐进的结局问题,先给出一个近似正确的答案,并进行不断地修正,一步一步的逼近最终得答案,就向这道题一样,可以先实现有重复解得程序,...
  • GODBAR
  • GODBAR
  • 2016年12月01日 11:14
  • 129

LeetCode No.15 3Sum

LeetCode No.15 3Sum

LeetCode 遍历技巧 | 15. 3Sum

Leetcode15. 3Sum

LeetCode15: 3 Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目121:15. 3Sum
举报原因:
原因补充:

(最多只允许输入30个字)