Leetcode 15 3Sum
2017-06-13 10:53
351 查看
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.
要怎么解决重复是一个问题
万能的sort就起作用了
public class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
Arrays.sort(nums);
for (int i = 0; i + 2 < nums.length; i++) {
if (i > 0 && nums[i] == nums[i - 1]) {
continue;
}
int j = i + 1, k = nums.length - 1;
while (j < k) {
if (nums[j] + nums[k] + nums[i] == 0) {
result.add(Arrays.asList(nums[i], nums[j], nums[k]));
j++;
k--;
while (j < k && nums[j] == nums[j - 1]){
j++;
}
while (j < k && nums[k] == nums[k + 1]){
k--;
}
} else if (nums[j] + nums[k] > -nums[i]) {
k--;
} else {
j++;
}
}
}
return result;
}
}
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] ]
要怎么解决重复是一个问题
万能的sort就起作用了
public class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> result = new ArrayList<>();
Arrays.sort(nums);
for (int i = 0; i + 2 < nums.length; i++) {
if (i > 0 && nums[i] == nums[i - 1]) {
continue;
}
int j = i + 1, k = nums.length - 1;
while (j < k) {
if (nums[j] + nums[k] + nums[i] == 0) {
result.add(Arrays.asList(nums[i], nums[j], nums[k]));
j++;
k--;
while (j < k && nums[j] == nums[j - 1]){
j++;
}
while (j < k && nums[k] == nums[k + 1]){
k--;
}
} else if (nums[j] + nums[k] > -nums[i]) {
k--;
} else {
j++;
}
}
}
return result;
}
}
相关文章推荐
- leetcode --15. 3Sum
- Leetcode: 15. 3Sum 三数之和
- 3Sum (leetcode 15)
- leetcode15:3Sum
- LeetCode(15) 3Sum
- [leetcode] 15. 3Sum 解题报告
- leetcode 15 3Sum
- leetcode-15-3sum
- 3Sum - LeetCode 15
- LeetCode之15----3Sum
- [LeetCode] 15. 3Sum
- LeetCode - 15. 3Sum
- leetcode-15-3sum
- LeetCode 15 — 3Sum(C++ Java Python)
- leetcode 15 3Sum
- leetcode解题之 15. 3Sum Java版(结果为目标值的三个数字)
- leetcode-15 3Sum
- 【Leetcode 15】3Sum 三数和问题 C++
- Java [leetcode 15] 3Sum
- LeetCode 15 3Sum