leetcode 15.三數之和

給定一個包含 n 個整數的數組 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出全部知足條件且不重複的三元組。

注意:答案中不能夠包含重複的三元組。

例如, 給定數組 nums = [-1, 0, 1, 2, -1, -4],

知足要求的三元組集合爲:
[
  [-1, 0, 1],
  [-1, -1, 2]
]

來源:力扣(LeetCode)
連接:https://leetcode-cn.com/problems/3sum
著做權歸領釦網絡全部。商業轉載請聯繫官方受權,非商業轉載請註明出處。














import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Solution {
    public static List<List<Integer>> threeSum(int[] nums){
        List<List<Integer>> ans=new ArrayList<>();//List嵌套申明
        int len=nums.length;
        if(len<3||nums==null) return ans;
        Arrays.sort(nums);
        for(int i=0;i<len;i++){
            if(nums[i]>0) break;
            if(i>0 && nums[i]==nums[i-1]){
                continue;//當i>0時才能知足i-1
            }
            int L=i+1;
            int R=len-1;
            while(R>L){
                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;
}
}
相關文章
相關標籤/搜索