Guest User

Untitled

a guest
Oct 19th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. class Solution {
  2. public List<List<Integer>> threeSum(int[] nums) {
  3. List<List<Integer>> result = new LinkedList<>();
  4. Arrays.sort(nums);
  5. for (int i = 0; i < nums.length - 2; i++) {
  6. if (i > 0 && nums[i] == nums[i-1]) continue;
  7. twoSum(nums, i + 1, nums.length - 1, -nums[i], result);
  8. }
  9. return result;
  10. }
  11.  
  12. public void twoSum(int[] numbers, int i, int j, int target, List<List<Integer>> result) {
  13. while (i < j) {
  14. int sum = numbers[i] + numbers[j];
  15. if (sum == target) {
  16. result.add(Arrays.asList(-target, numbers[i], numbers[j]));
  17. while (i < j && numbers[i] == numbers[i+1]) i++;
  18. while (i < j && numbers[j] == numbers[j-1]) j--;
  19. i++; j--;
  20. }
  21. else if (sum > target) j--;
  22. else i++;
  23. }
  24. }
  25. }
Add Comment
Please, Sign In to add comment