LeetCode-015-三数之和

思路:固定一个,然后用双指针进行遍历即可,记得去重
代码:

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> ans=new ArrayList<>();
        if(nums==null||nums.length<3)return ans;
        Arrays.sort(nums);
        for(int i=0;i<nums.length-2;i++){
            if(nums[i]>0) return ans;
            if(i>0&&nums[i]==nums[i-1])continue;
            int left=i+1,right=nums.length-1;
            int target=-nums[i];
            while(left<right){
                if(nums[left]+nums[right]==target)
                {
                ans.add(new ArrayList<>(Arrays.asList(nums[i], nums[left], nums[right])));
                left++;right--;
                while(left<right&&nums[left]==nums[left-1])left++;
                while(left<right&&nums[right]==nums[right+1])right--;
                }
                else if(nums[left]+nums[right]<target)left++;
                else right--;
            }  
        }
        return ans;
}
}
上一篇:015 pip的使用


下一篇:[GXYCTF2019]禁止套娃 WP