58.4Sum-四数之和(中等题)

来源:互联网 发布:linux如何安装bind 编辑:程序博客网 时间:2024/05/16 12:52

四数之和

  1. 题目

    给一个包含n个数的整数数组S,在S中找到所有使得和为给定整数target的四元组(a, b, c, d)。

    注意事项
    四元组(a, b, c, d)中,需要满足a <= b <= c <= d
    答案中不可以包含重复的四元组。

  2. 样例

    例如,对于给定的整数数组S=[1, 0, -1, 0, -2, 2] 和 target=0. 满足要求的四元组集合为:
    (-1, 0, 0, 1)
    (-2, -1, 1, 2)
    (-2, 0, 0, 2)

  3. 题解

57.3Sum-三数之和(中等题)的难度升级版,思路完全一致。

public class Solution {    /**     * @param numbers : Give an array numbersbers of n integer     * @param target : you need to find four elements that's sum of target     * @return : Find all unique quadruplets in the array which gives the sum of     *           zero.     */    public ArrayList<ArrayList<Integer>> fourSum(int[] numbers, int target) {        ArrayList<ArrayList<Integer>> result = new ArrayList<ArrayList<Integer>>();        Arrays.sort(numbers);        for (int i=0;i<numbers.length-3;i++)        {            if (i!=0 && numbers[i] ==numbers[i-1])            {                continue;            }            for (int j=i+1;j<numbers.length-2;j++)            {                if (j != i+1 && numbers[j] ==numbers[j-1])                {                    continue;                }                int start = j+1;                int end = numbers.length-1;                while (start < end)                {                    int sum = numbers[i] + numbers[j] + numbers[start] + numbers[end];                    if (sum == target)                    {                        ArrayList<Integer> list = new ArrayList<Integer>();                        list.add(numbers[i]);                        list.add(numbers[j]);                        list.add(numbers[start]);                        list.add(numbers[end]);                        result.add(list);                        start++;                        end--;                        while (start < end && numbers[start] == numbers[start-1])                        {                            start++;                        }                        while (start < end && numbers[end] == numbers[end+1])                        {                            end--;                        }                    }                    else if (sum < target)                    {                        start++;                    }                    else                    {                        end--;                    }                }            }        }        return result;    }}

Last Update 2016.9.30

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 科目一考试没去怎么办 科目一成绩单丢了怎么办 考科目二身份证丢了怎么办 考科目三身份证丢了怎么办 考科目一身份证丢了怎么办 滴滴顺风车被永久封禁怎么办 三岁宝宝智力发育迟缓怎么办 学车体检听力没过怎么办 学车体检听力不过关怎么办 离职体检发现听力有问题怎么办 买的二手房土地证没过户怎么办 b2扣了9分怎么办 上海网约车车证怎么办 b2驾照累计12分怎么办 c1本扣满12分怎么办 太原公共自行车丢了怎么办 在太原出租车丢了东西怎么办 太原社保卡丢了怎么办 太原铁路医保卡丢了怎么办 学车体检视力不合格怎么办 换驾照色弱被拒怎么办 在上海考驾照贵怎么办 驾驶证有效期过了半年怎么办 资格证脱审2年了怎么办 换驾驶证时眼睛近视了怎么办 违章累计扣12分怎么办 一个违章扣12分怎么办 a1驾照扣3分怎么办 a1驾照扣12分怎么办 吃了毓婷哺乳了怎么办 吃了毓婷后出血怎么办 吃金毓婷喝了水怎么办 白带浓稠浆糊样怎么办 驾校学费不给退怎么办 b1驾证扣了9分怎么办 机动车登记证丢了怎么办 b1驾照扣了9分怎么办 听力正常体检不过关怎么办 做完人流第二天同房了怎么办 医院的票据丢了怎么办 体检人体成分(脂肪缺乏)该怎么办