剑指 Offer II 数组

007. 数组中和为 0 的三个数

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
        List<List<Integer>> ans =new ArrayList();
        Arrays.sort(nums);
        int n=nums.length;

        for(int i=0;i<n;i++)
        {
            if(i>0&&nums[i]==nums[i-1])continue;//因为排好序 以相同的数为起点 得到的三元组必定重复
            for(int j=i+1,k=n-1;j<k;j++)
            {
                if(j>i+1&&nums[j]==nums[j-1])continue;
                while(nums[i]+nums[j]+nums[k]>0&&k>=j+2)k--;
                if(nums[i]+nums[j]+nums[k]==0)ans.add(Arrays.asList(nums[i],nums[j],nums[k]));
            }
        }
        return ans;
    }
}
上一篇:数字系统设计实验1


下一篇:云原生-我的学习路线总结