• 【数组】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:

    • Elements in a quadruplet (a,b,c,d) must be in non-descending order. (ie, a ≤ b ≤ c ≤ d)
    • 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)

    思路:

    定义一对指针,指向两头。再定义一对指针,指向中间的两个元素。加起来看看跟target比较一下。决定内部指针怎么移动。
    注意结果可能出现重复的结果,需要做一下去重操作。
    /**
     * @param {number[]} nums
     * @param {number} target
     * @return {number[][]}
     */
    var fourSum = function(nums, target) {
        var n=nums.length,temp=0,res=[];
        
        if(nums.length<4){
            return [];
        }
        
        nums.sort(function(a,b){return a-b;});
        
        for(var i=0;i<n-3;i++){
            for(var j=n-1;j>i+2;j--){
                temp=target-nums[i]-nums[j];
                var a=i+1,
                    b=j-1;
                while(a<b){
                    var sum=nums[a]+nums[b];
                    if(sum==temp){
                        var arr=[nums[i],nums[a],nums[b],nums[j]];
                        res[res.length]=arr;
                        a++;
                        b--;
                    }else if(sum<temp){
                        a++;
                    }else{
                        b--;
                    }
                }
            }    
        }
        
        return res.unique();
    };
    
    Array.prototype.unique = function(){
     var res = [];
     var json = {};
     for(var i = 0; i < this.length; i++){
      if(!json[this[i]]){
       res.push(this[i]);
       json[this[i]] = 1;
      }
     }
     return res;
    }
  • 相关阅读:
    编译C语言单元测试框架CUnit库的方法
    C# 基本元素
    pip的基本使用
    Ubuntu源码安装php
    Ubuntu源码安装Apache服务器
    centos7搭建LAMP(yum安装)
    windows搭建web环境(WAMP)
    windows配置web环境之(搭建php7+apache2 )
    安装thinkphp5
    分离式lnmp部署
  • 原文地址:https://www.cnblogs.com/shytong/p/5137972.html
Copyright © 2020-2023  润新知