• 18. 4Sum


    Given an array S of n integers, are there elements abc, and d in S such that a + b + c + d = target? Find all unique quadruplets in the array which gives the sum of target.

    Note: The solution set must not contain duplicate quadruplets.

    For example, given array S = [1, 0, -1, 0, -2, 2], and target = 0.
    
    A solution set is:
    [
      [-1,  0, 0, 1],
      [-2, -1, 1, 2],
      [-2,  0, 0, 2]
    ]

    此题和three sum比较类似,求法也差不多,直接上代码:

    public class Solution {

        public List<List<Integer>> fourSum(int[] nums, int target) {

            List<List<Integer>> res = new ArrayList<>();

            Arrays.sort(nums);

            for(int i=0;i<nums.length-3;i++){

                if(i!=0&&nums[i]==nums[i-1]) continue;

                for(int j=i+1;j<nums.length-2;j++){

                    if(j!=i+1&&nums[j]==nums[j-1]) continue;

                    int low = j+1,high = nums.length-1;

                    while(low<high){

                        int sum = nums[i]+nums[j]+nums[low]+nums[high];

                        if(sum<target){

                            low++;

                        }else if(sum>target){

                            high--;

                        }else{

                            res.add(Arrays.asList(nums[i],nums[j],nums[low],nums[high]));

                            while(low<high&&nums[low]==nums[low+1]) low++;

                            while(low<high&&nums[high]==nums[high-1]) high--;

                            low++;

                            high--;

                        }

                    }

                }

            }

            return res;

        }

    }

  • 相关阅读:
    VC++以及VS个版本比较 及 C++编译器比较
    这本书的封面
    json_encode(),json_deocde()用法说明
    循环匹配,一般用于多选列表选中状态
    js判断变量是否被定义
    js onload()事件调用方法
    js push使用方法
    iframe去掉边滚动条
    ajax上传文件(使用ajaxfileupload)
    基于url的权限控制
  • 原文地址:https://www.cnblogs.com/codeskiller/p/6354106.html
Copyright © 2020-2023  润新知