3Sum
Problem Link - 3Sum
Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]]
such that i != j
, i != k
, and j != k
, and nums[i] + nums[j] + nums[k] == 0
.
Notice that the solution set must not contain duplicate triplets.
Example 1:
Input: nums = [-1,0,1,2,-1,-4]
Output: [[-1,-1,2],[-1,0,1]]
Example 2:
Input: nums = []
Output: []
Example 3:
Input: nums = [0] Output: []
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | class Solution { public List < List < Integer >> threeSum(int[] nums) { Arrays.sort(nums); List < List < Integer >> result = new ArrayList < > (); for (int i = 0; i < nums.length; i++) { int start = i + 1; int end = nums.length - 1; if (i > 0 && nums[i] == nums[i - 1]) { continue; } while (end > start) { if (end < nums.length - 1 && nums[end] == nums[end + 1]) { end--; continue; } if (nums[i] + nums[start] + nums[end] == 0) { result.add(Arrays.asList(nums[i], nums[start], nums[end])); start++; end--; } else if (nums[i] + nums[start] + nums[end] < 0) { start++; } else { end--; } } } return result; } } |
No comments:
Post a Comment