美文网首页
数字和 - LC15 3sum

数字和 - LC15 3sum

作者: 风烨 | 来源:发表于2017-11-08 06:29 被阅读0次

先排序,用三个指针,时间复杂度为O(n2)

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> res = new ArrayList<>();
        Arrays.sort(nums);
        for(int i = 0; i< nums.length-2; i++){
            if (nums[i] > 0) return res;// positive cannot be zero
            if (i > 0 && nums[i] == nums[i - 1]) continue;// skip same value
            for(int j = i + 1, k = nums.length - 1; j < k;){ // j for nearst value, k for biggest value
                int sum = Math.negateExact(nums[i]); // this method only for int or long
                if (nums[j] + nums[k] == sum) {
                     //adding value and moveing pointer k and j
                    res.add(new ArrayList<Integer>(Arrays.asList(nums[i],nums[j++], nums[k--])));
                    while (j < k && nums[j] == nums[j - 1]) j++;// skip same value
                    while (j < k && nums[k] == nums[k + 1]) k--;// skip same value
                } else if ( nums[j] + nums[k] > sum)  --k; // find smaller value from k
                else ++j; // find bigger value from j
            }
        }
  
        return res;
    }
}

相关文章

  • 数字和 - LC15 3sum

    先排序,用三个指针,时间复杂度为O(n2)

  • Array

    LC15 3Sum先排序, 然后开始第一层遍历,记为i,记住先去重,那么第二层遍历从i+1到末尾,用双指针,前后夹...

  • 数字和 - LC16 3sum Closest

    和15题的方法相近,就是通过绝对值找到最近的数字,时间附加度依然是O(n2)。

  • Leetcode - Array [持续更新]

    15. 3Sum --- Medium[https://leetcode.com/problems/3sum/]1...

  • 15. 3Sum

    15. 3Sum 题目:https://leetcode.com/problems/3sum/ 难度: Mediu...

  • JavaScript#39:数组--(求和)Combinatio

    因为给定的集合没有重复数字,所以省去了去重(去重参考3Sum)。 因为某一个数字可以重复,所以内部的循环从外部循环...

  • 15. 三数之和

    题目地址(3sum/">15. 三数之和) https://leetcode.cn/problems/3sum/[...

  • 16. 3Sum Closest

    与3Sum思路相同

  • 数组

    数组题目总结 sum类型的题 leetcode 2sum leetcode 15. 3Sum思路:将3sum转化成...

  • LeetCode 4Sum 解题报告

    其思路类似于3sum。下面是题目和代码。 Given an array S of n integers, are ...

网友评论

      本文标题:数字和 - LC15 3sum

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