3Sum
Total Accepted: 123026
Total Submissions: 643583
Difficulty: Medium
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] ]
Subscribe to see which companies asked this question
Hide Similar Problems
思路:
与【3Sum Closest】类似,改变一下符合结果的条件即可。
java code:
public class Solution {
public List<List<Integer>> threeSum(int[] nums) {
List<List<Integer>> ans = new ArrayList<List<Integer>>();
int n = nums.length;
Arrays.sort(nums);
for(int first = 0;first < n-2;first++) {
if(first > 0 && nums[first] == nums[first-1]) continue;
int second = first + 1, third = n - 1;
while(second < third) {
int sum = nums[first] + nums[second] + nums[third];
if(sum == 0) {
ans.add(Arrays.asList(nums[first], nums[second], nums[third]));
while(second < third && nums[second] == nums[second+1]) second++;
while(second < third && nums[third] == nums[third-1]) third--;
}
if(sum < 0)
second++;
else // sum >= 0
third--;
}
}
return ans;
}
}