• 23.3Sum(三数和为零)


    Level:

      Medium

    题目描述:

    Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.

    Note:

    The solution set must not contain duplicate triplets.

    Example:

    Given array nums = [-1, 0, 1, 2, -1, -4],
    
    A solution set is:
    [
      [-1, 0, 1],
      [-1, -1, 2]
    ]
    

    思路分析:

     求数组中三数和为零的情况,首先我们将数组进行排序,然后遍历数组,设置两个指针left和right,访问到节点i的时候,将left设置为i+1,right设置为nums.length-1。然后看nums[left]和nums[right]的和是否为-nums[i],如果是,那么就找到一组满足要求的解,如果不能则移动left和right,直到相等。

    ​ 注意要避免重复的情况

    代码:

    class Solution {
        public List<List<Integer>> threeSum(int[] nums) {
            List<List<Integer>>res=new ArrayList<>();
            if(nums==null||nums.length<3)
                return res;
            Arrays.sort(nums);  //进行排序
            for(int i=0;i<nums.length;i++){
                int towsum=-nums[i];
                int left=i+1;
                int right=nums.length-1;
                while(left<right){
                    if(nums[left]+nums[right]==towsum){
                        res.add(Arrays.asList(nums[i],nums[left],nums[right]));
                        left++;
                        while(left<nums.length&&nums[left]==nums[left-1])
                            left++;               //避免出现重复情况
                        right--;
                        while(right>=0&&nums[right]==nums[right+1])
                            right--;              //避免出现重复情况
                    }
                    else if(nums[left]+nums[right]<towsum){
                        left++;
                    }
                    else{
                        right--;
                    }
                }
                while(i<nums.length-1&&nums[i]==nums[i+1])
                    i++;              //避免出现重复情况
            }
            return res;
        }
    }
    
  • 相关阅读:
    java实现第六届蓝桥杯表格计算
    form表单的几种提交方式
    web项目的文件上传和 下载
    Web应用中request获取path,URI,URL
    Tomcat之——内存溢出设置JAVA_OPTS
    请问set JAVA_OPTS的各项參数是什么意思?
    input上传图片并预览
    input标签前台实现文件上传
    Bootstrap之Form表单验证神器: BootstrapValidator(转)
    jQuery Validate验证框架详解
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10744600.html
Copyright © 2020-2023  润新知