LeetCode_OJ【15】3Sum
来源:互联网 发布:淘宝bug 编辑:程序博客网 时间:2024/05/22 14:44
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:
- Elements in a triplet (a,b,c) must be in non-descending order. (ie,a ≤ b ≤ c)
- 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)
找出给定数组中总和为0的所有不重复的三个数的集合。
这个题目的解题思路和第一题Two Sum类似,不过给定数组中有重复的数字,在解题时要注意这点,不要输出相同的解。
使用双指针法的前提是给定数组已经排好顺序,所以首先得先给数组排序,在解题过程中也可以根据一些条件进行限界,下面是解题思路的java实现:
public class Solution { public List<List<Integer>> threeSum(int[] nums) { Arrays.sort(nums);List<List<Integer>> res = new ArrayList<List<Integer>>();for(int i = 0; i < nums.length-2 && nums[i] <= 0 ; i++){ if(i != 0 && nums[i-1] == nums[i])continue;for(int j = i + 1,p = nums.length-1 ; j < p ; ){List<Integer> tmp = new ArrayList<Integer>();if(nums[i] + nums[j] + nums[p] == 0 ){ if(j != i+1 && nums[j-1] == nums[j]){ j ++; continue; }tmp.add(nums[i]);tmp.add(nums[j]);tmp.add(nums[p]);res.add(tmp);j ++ ;}else if(nums[i] + nums[j] + nums[p] > 0){p --;}else{j ++;}}} return res; }}
0 0
- LeetCode_OJ【15】3Sum
- LeetCode_OJ【16】3Sum Closest
- LeetCode_OJ【18】4Sum
- LeetCode_OJ【39】Combination Sum
- LeetCode_OJ【40】Combination Sum II
- [Leetcode] #1#15#18 2Sum & 3Sum & 4Sum
- Sum—LeetCode-15 3Sum
- leetcode 15 3 sum 4 sum
- LeetCode_OJ【178】Rank Scores
- LeetCode_OJ【180】Consecutive Numbers
- LeetCode_OJ【28】Implement strStr()
- LeetCode_OJ【43】Multiply Strings
- LeetCode_OJ【44】Wildcard Matching
- LeetCode_OJ【48】Rotate Image
- LeetCode_OJ【46】Permutations
- LeetCode_OJ【47】Permutations II
- LeetCode_OJ【53】Maximum Subarray
- LeetCode_OJ【54】Spiral Matrix
- 忍忍
- word转pdf还有什么好的方法
- 设定字符串字符的颜色
- iOS界面设计切图小结
- Uva 11582 Colossal Fibonacci Numbers! 快速幂,斐波那契
- LeetCode_OJ【15】3Sum
- POJ1753 Flip Game【高斯消元法】
- C++全局函数与类成员函数的区别和相互转化
- jQuery与MooTools库的一些比对
- Java NIO内存映射---上G大文件处理
- dell 功能快捷键切换
- UIImageView和UIButton的区别
- @SuppressWarnings注解
- %02f前面却出现很多6个f