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;
};

原文地址:https://www.cnblogs.com/xingguozhiming/p/10387344.html

时间: 2024-11-10 05:13:33

18. 4Sum(js)的相关文章

LeetCode:18. 4Sum(Medium)

1. 原题链接 https://leetcode.com/problems/4sum/description/ 2. 题目要求 给出整数数组S[n],在数组S中是否存在a,b,c,d四个整数,使得四个数之和等于目标整数target.请找出所有满足此条件的四个整数. 3. 解题思路 先对nums进行排序,然后采用两层for循环来确定前两个数字,最后在第二层for循环中确定后两个数字. 注意可能存在重复解!! 如下图所示,对Input先进行排序:[-4, -1, -1,0, 1,2],target

18. 4Sum(双指针)

Given an array nums of n integers and an integer target, are there elements a, b, c, 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 dupli

创建HTML新元素(js)

1 <!-- 2 创建新的HTML元素 3 1.创建新的元素 4 2.创建新的节点 5 3.追加节点 6 4.向已有元素追加新的元素 7 --> 8 <html> 9 <body> 10 11 <div id="div1"> 12 <p id="p1">这是一个段落</p> 13 <p id="p2">这是另一个段落</p> 14 </div&g

JavaScript(JS)之Javascript对象

JavaScript(JS)之Javascript对象 简介: 在JavaScript中除了null和undefined以外其他的数据类型都被定义成了对象,也可以用创建对象的方法定义变量,String.Math.Array.Date.RegExp都是JavaScript中重要的内置对象,在JavaScript程序大多数功能都是基于对象实现的 <script language="javascript"> var aa=Number.MAX_VALUE; //利用数字对象获取可

百度静态资源(JS)公共库

     例如: chosen http://apps.bdimg.com/libs/chosen/1.1.0/chosen.jquery.min.js classlist http://apps.bdimg.com/libs/classlist/2014.01.31/classList.min.js cookies.js http://apps.bdimg.com/libs/Cookies.js/0.4.0/cookies.min.js dojo http://apps.bdimg.com/l

前台强大的图表(js)

http://www.jqplot.com/ 网址,自己下载下例子看一下就明白了. 这个是我之前做的项目中的例子(仅是部分代码): function publicMethod(){                         var plot1 = $.jqplot(chart, [currYear], {                 seriesColors: ["rgb(23, 108, 238)"],                 title: titles,     

人性多面性的终极教材——北漂18年(4)

十几年来工作中遇到很多人,也多次见识了人的多面性,至今给我印象最深的教材就是来北京的第一个老板--冯姐,从她身上我看到人性正常(谈不上善良)与虚伪(谈不上诡诈).这人绝对不是人口比较好的(有时甚至谈不上好,离"实在"更是差很远),也绝对不是最虚伪(诡诈都谈不上,生意人的小聪明而已),之所以用"终极教材"来称呼是因为例子都实在太典型了.顺便说一句,以上特点都是环境结合自己固有人性造就的. 性格特点 之前提过一点儿,这人1997年36岁(2015年应该是54岁),之前在

给数组添加一个根据指定下标删除元素的方法、得到0-100的随机数不重复(js)、得到外联样式的css样式值

/** *删除数组指定下标或指定对象 */ Array.prototype.remove=function(obj){ for(var i =0;i <this.length;i++){ var temp = this[i]; if(!isNaN(obj)){ temp=i; } if(temp == obj){ for(var j = i;j <this.length;j++){ this[j]=this[j+1]; } this.length = this.length-1; } } }

JavaScript(JS)之简单介绍

JavaScript(JS)之简单介绍 一.JavaScript的历史 1992年Nombas开发出C-minus-minus(C--)的嵌入式脚本语言(最初绑定在CEnvi软件中).后将其改名ScriptEase.(客户端执行的语言) Netscape(网景)接收Nombas的理念,(Brendan Eich)在其Netscape Navigator 2.0产品中开发出一套livescript的脚本语言.Sun和Netscape共同完成.后改名叫Javascript 微软随后模仿在其IE3.0