leetcode 15. 3Sum

题目
外面一层循环,固定一个值,然后在这个值的后面使用双指针,前后的推动,找寻满足条件的值。

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        Arrays.sort(nums);
        Set<List<Integer>> set = new HashSet<>();
        for(int i=0;i<nums.length-2;i++){
            int l=i+1,r=nums.length-1;
            while(l<r){
                int tmp = nums[i]+nums[l]+nums[r];
                if(tmp==0){
                    List<Integer> res = new ArrayList<>();
                    res.add(nums[i]);
                    res.add(nums[l]);
                    res.add(nums[r]);
                    set.add(res);
                    r--;
                }else if(tmp>0){
                    r--;
                }else{
                    l++;
                }
            }
        }
        List<List<Integer>> list = new ArrayList<>(set);
        return list;
    }
}
发布了213 篇原创文章 · 获赞 1 · 访问量 2743
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览