• 18. 4Sum(js)


    18. 4Sum

    Given an array nums of n integers and an integer target, are there elements abc, and d in nums 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.

    Example:

    Given array nums = [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]
    ]
    题意:给定一个数字数组和一个目标值,找出所有4项组合使得四项相加等于目标值
    代码如下:
    var fourSum = function(nums, target) {
        var len=nums.length;
        var res=[];
        if(nums.length<4 || !nums) return res;
        if(len===4 && nums[0]+nums[1]+nums[2]+nums[3]==target) return [nums];
        //排序
        nums=nums.sort(function(a,b){return a-b;})
        
        for(var i=0;i<len-3;i++){
            //判断相等项
            // if(nums[i]===nums[i-1]) continue;
            for(var j=i+1;j<len-2;j++){
                if(j>i+1 && nums[j]===nums[j-1]) continue;
                var start=j+1,end=len-1;
                while(start<end){
                    var sum=nums[i]+nums[j]+nums[start]+nums[end];
                    if(sum===target){
                           res.push([nums[i],nums[j],nums[start],nums[end]])  
                        ++start;
                        --end;
                    }else if(nums[i]+nums[j]+nums[start]+nums[end]>target){
                        --end;
                    }else{
                        ++start;
                    }
                }
            }
        }
       //去重
        var hash = {};  
        var result = [];  
        res.forEach(item=>{
            if(!hash[item]){
                result.push(item);
                hash[item]=true;
            }
        })
        return result;
    };
  • 相关阅读:
    洛谷P4175 网络管理
    洛谷P2605 基站选址
    洛谷P3723 礼物
    bzoj3771 Triple
    洛谷P3321 序列统计
    bzoj2194 快速傅里叶之二
    1109课堂内容整理
    响应式网页
    表单隐藏域有什么作用?
    1106课堂笔记
  • 原文地址:https://www.cnblogs.com/xingguozhiming/p/10387344.html
Copyright © 2020-2023  润新知