Skip to content

Commit e686121

Browse files
authored
Added 015_3Sum.java (qiyuangong#67)
* Added 015_3Sum.java Contributed by @green-study
1 parent 354044a commit e686121

File tree

1 file changed

+47
-0
lines changed

1 file changed

+47
-0
lines changed

java/015_3Sum.java

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
//015. 3Sum
2+
class Solution {
3+
public List<List<Integer>> threeSum(int[] nums) {
4+
//create result list to store i,j,k
5+
List<List<Integer>> result = new LinkedList<List<Integer>>();
6+
7+
//sorting nums
8+
Arrays.sort(nums);
9+
10+
for (int i = 0; i < nums.length - 2; i++) {
11+
12+
int left = i + 1;
13+
int right = nums.length - 1;
14+
15+
if (i > 0 && nums[i] == nums[i-1]) {
16+
continue; //if nums have same numbers, just check one time.
17+
}
18+
19+
while (left < right) {
20+
int sum = nums[left] + nums[right] + nums[i];
21+
22+
if (sum == 0) {
23+
//if sum == 0, store i,j,k
24+
result.add(Arrays.asList(nums[i], nums[left], nums[right]));
25+
left++; //check anoter case
26+
right--;
27+
//if next number == now number
28+
while (nums[left] == nums[left - 1] && left < right) {
29+
left++;
30+
}
31+
while (nums[right] == nums[right + 1] && left < right) {
32+
right--;
33+
}
34+
} else if (sum > 0) {
35+
//if sum > 0, right--;
36+
right--;
37+
} else {
38+
//if sum < 0, left++;
39+
left++;
40+
}
41+
}
42+
}
43+
44+
return result; //return result list
45+
}
46+
}
47+

0 commit comments

Comments
 (0)