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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| package com.demo.s15;
import java.util.ArrayList; import java.util.Arrays; import java.util.List;
public class Solution { public List<List<Integer>> threeSum(int[] nums) { List ret = new ArrayList(); if(nums.length < 3) return ret; Arrays.sort(nums); for(int i = 0 ;i< nums.length-2; i++) { if(nums[i] > 0) return ret; if(i> 0 && nums[i] == nums[i-1]) continue; int L = i +1; int R = nums.length - 1; while(L < R) { if(nums[i] + nums[L] + nums[R] == 0) { List numbers = new ArrayList(); numbers.add(nums[i]); numbers.add(nums[L]); numbers.add(nums[R]); ret.add(numbers); while(L< R && (nums[L] == nums[L+1])) { L++; } while(R > L && nums[R] == nums[R-1]) { R--; } L++; R--; } else if(nums[i] + nums[L] + nums[R] < 0) { L++; } else { R--; } } } return ret; } }
|