LeetCode15:三数之和

    技术2022-07-16  73

    class Solution { public static List<List<Integer>> threeSum(int[] nums) { List<List<Integer>> ans = new ArrayList<>(); int n = nums.length; if(n < 3 || nums==null){ return ans; } Arrays.sort(nums); for(int i = 0;i < n;i++){ if(nums[i]>0) break; if(i>0 && nums[i]==nums[i-1]){ continue; } int l = i+1; int r = n-1; while(l<r){ int sum = nums[i]+nums[l]+nums[r]; if(sum==0){ ans.add(Arrays.asList(nums[i],nums[l],nums[r])); while(l<r && nums[l]==nums[l+1]){ l++; } while(l<r && nums[r]==nums[r-1]){ r--; } l++; r--; } else if(sum<0){ l++; } else if(sum>0){ r--; } } } return ans; } }

     

    Processed: 0.016, SQL: 9