3Sum

来源:互联网 发布:linux qq rpm最新版 编辑:程序博客网 时间:2024/05/17 04:06
public class Solution {    public ArrayList<ArrayList<Integer>> threeSum(int[] num) {        HashSet<ArrayList<Integer>> triplets = new HashSet<ArrayList<Integer>>();        Arrays.sort(num);        // Two pointers scan        for(int i = 0; i < num.length - 2; i++) {            int left = i + 1, right = num.length - 1;            while(left < right) {                int sum = num[i] + num[left] + num[right];                if(sum == 0) {                    ArrayList<Integer> triplet = new ArrayList<Integer>();                    triplet.add(num[i]);                    triplet.add(num[left]);                    triplet.add(num[right]);                    triplets.add(triplet);                    left++;                    right--;                } else if(sum < 0) {                    left++;                } else {                    right--;                }            }        }        return new ArrayList(triplets);    }}


Time: O(n^2)

Space: O(1)

0 0