Sum—LeetCode-15 3Sum
来源:互联网 发布:老王风生水起淘宝假货 编辑:程序博客网 时间:2024/06/05 00:55
问题描述:
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.
Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4],A solution set is:[ [-1, 0, 1], [-1, -1, 2]]
解题思想:固定一个值,就可以转化为两个数和等于指定值,要学会抽象思维,时间复杂度O(n*n),见代码:
public List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> resList = new ArrayList<List<Integer>>(); Arrays.sort(nums); int pre = Integer.MAX_VALUE; for(int i = 0;i < nums.length-2; ++i){ int target = nums[i] * (-1); if(pre != nums[i]){ List<List<Integer>> tempList = twoSum(nums, i+1, target); if(null != tempList){ for(List<Integer> list: tempList){ List<Integer> temp = new ArrayList<Integer>(); temp.add(nums[i]); temp.add(list.get(0)); temp.add(list.get(1)); resList.add(temp); } } } pre = nums[i]; } return resList; } public List<List<Integer>> twoSum(int[] nums, int beginIndex, int target){ List<List<Integer>> resList = new ArrayList<List<Integer>>(); int end = nums.length - 1; int preBeginElem = Integer.MAX_VALUE; int preEndElem = Integer.MAX_VALUE; while(beginIndex < end) { if(nums[beginIndex] + nums[end] > target){ --end; } else if(nums[beginIndex] + nums[end] < target){ ++beginIndex; } else { if(nums[beginIndex] != preBeginElem && nums[end] != preEndElem){ List<Integer> tempList = new ArrayList<Integer>(); tempList.add(nums[beginIndex]); tempList.add(nums[end]); resList.add(tempList); } preBeginElem = nums[beginIndex]; preEndElem = nums[end]; ++beginIndex; --end; } } return resList; }
0 0
- Sum—LeetCode-15 3Sum
- 【Leetcode】3Sum (Sum)
- Leetcode 15 3Sum
- LeetCode 15: 3Sum
- leetcode 15 3Sum
- [leetcode 15] 3Sum
- Leetcode【15】:3Sum
- [leetcode 15] 3Sum
- [Leetcode] 15 - 3Sum
- leetcode.15-----------3Sum
- leetcode 15 3Sum
- leetcode-15 3Sum
- 3Sum - LeetCode 15
- Leetcode #15 3 Sum
- LeetCode---(15) 3 sum
- LeetCode 15 - 3Sum
- leetcode-15 3sum
- leetcode 15 -- 3Sum
- Unity3D(六)背包系统
- 基于Spring的新浪微博第三方登录实现
- Android HTTPS安全漏洞分析
- Java面向对象设计模式(二十一)——访问者模式(Visitor)
- 机器学习基石笔记8——为什么机器可以学习(4)
- Sum—LeetCode-15 3Sum
- 太阳能与共享单车走向世界
- C++Primer第5版读书笔记(第15章)
- spring data jpa 的配置
- web应用获取客户端真实ip
- UI Automator(Android自动化测试)全面学习笔记
- 机器学习基石笔记9——Linear Regression
- 浅谈多核CPU、多线程与并行计算
- volatile的适用场景