当前位置: 首页 > news >正文

LeetCode18.四数之和 JavaScript

给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 abc d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组。

注意:
答案中不可以包含重复的四元组。

示例:

给定数组 nums = [1, 0, -1, 0, -2, 2],和 target = 0

满足要求的四元组集合为:

[
  [-1,  0, 0, 1],
  [-2, -1, 1, 2],
  [-2,  0, 0, 2]
]

答案参考:

/**
 * @param {number[]} nums
 * @param {number} target
 * @return {number[][]}
 */
var fourSum = function(nums, target) {
    nums=nums.sort(function(a,b){return a-b});//先排序
    var arr=[];
    for(i=0;i<nums.length-3;i++){//第一个
        if (i>0 && nums[i-1]==nums[i]) continue
        for(j=i+1;j<nums.length-2;j++){//第二个
             if (j>i+1 && nums[j-1]==nums[j]) continue
            var k=nums.length-1
            var c=j+1;
            while(c<nums.length-1&&c!=k){//第三个
                var sum=nums[i]+nums[j]+nums[c]+nums[k]
                    if (c>j+1 &&nums[c]== nums[c-1]){
                        c++;                       
                        continue;
                    }
                    if (k<nums.length-1 &&nums[k]==nums[k+1]){
                        k--;                       
                        continue;
                    }
                if(sum==target){        
                        arr.push([nums[i],nums[j],nums[c],nums[k]]);         
                        c++
                        k=nums.length-1
                }
                else if(sum<target){
                    c++
                }
                else{
                    k--
                }              
            }
        }
    }   
    return arr
};

欢迎关注

相关文章:

  • matlab-高数 diff 方向导数
  • 聊一聊前端的监控
  • android图片蒙层
  • Docker学习笔记_使用Dockerfile创建flask的一个镜像
  • java 多线程基础, 我觉得还是有必要看看的
  • Nginx压测和并发预估
  • 未发先侃?对比华为,高通第二代5G调制解调器如何?
  • 安卓P底部有空白,需要手动全屏
  • vue.js框架原理浅析
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • SpringBoot 实战 (九) | 整合 Mybatis
  • ThinkSNSPlus 2.0 产品体验报告
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 资源 | 上千份简历模板统统给你!都拿去!
  • idou老师教你学Istio :5分钟简析Istio异常检测
  • 网络传输文件的问题
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 08.Android之View事件问题
  • Android Volley源码解析
  • Android单元测试 - 几个重要问题
  • AngularJS指令开发(1)——参数详解
  • avalon2.2的VM生成过程
  • canvas 绘制双线技巧
  • es6(二):字符串的扩展
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java IO学习笔记一
  • Rancher-k8s加速安装文档
  • react 代码优化(一) ——事件处理
  • springMvc学习笔记(2)
  • vue 个人积累(使用工具,组件)
  • vue:响应原理
  • yii2中session跨域名的问题
  • 测试如何在敏捷团队中工作?
  • 程序员最讨厌的9句话,你可有补充?
  • 仿天猫超市收藏抛物线动画工具库
  • 分类模型——Logistics Regression
  • 开发基于以太坊智能合约的DApp
  • 那些被忽略的 JavaScript 数组方法细节
  • 区块链技术特点之去中心化特性
  • 日剧·日综资源集合(建议收藏)
  • 算法---两个栈实现一个队列
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 移动端唤起键盘时取消position:fixed定位
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • # .NET Framework中使用命名管道进行进程间通信
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • #mysql 8.0 踩坑日记
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (java)关于Thread的挂起和恢复
  • (LeetCode C++)盛最多水的容器
  • (非本人原创)史记·柴静列传(r4笔记第65天)