分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

18. 4Sum(js)

发布时间:2023-09-06 02:33责任编辑:赖小花关键词: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;};

18. 4Sum(js)

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

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved