zoukankan      html  css  js  c++  java
  • lettcode 15 三数之和

    15. 三数之和

    给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。
    注意:答案中不可以包含重复的三元组。
    例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4],

    满足要求的三元组集合为:
    [
    [-1, 0, 1],
    [-1, -1, 2]
    ]

    超出时间限制
    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var threeSum = function(nums) { 
        nums = nums.sort(function(a,b){return a-b}); 
        let len = nums.length; 
        let temp = []; 
        let result = [];
        let a; 
        for(let i =0;i<len;i++){ 
            for(let j =i+1;j<len;j++){ 
                for(let k =j+1;k<len;k++){ 
                    if(nums[i]+nums[j]+nums[k] === 0){ 
                        a = nums[i] +','+ nums[j] +','+ nums[k];
                        temp.push(a); 
                    } 
                } 
            }
                    
        } 
        temp = [... new Set(temp)]; 
        for(let i=0;i<temp.length;i++){ 
            result[i] =temp[i].split(','); 
                                                              
        }
    
       return result; 
    };

    以下为通过代码

    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var threeSum = function(nums) {
        let len = nums.length;
        let arr = [];
        nums.sort(function(a, b) {
            return a - b
        })
        for(let i = 0; i < len; i++) {
            if(i > 0 && nums[i] === nums[i - 1]) {
                continue;
            }
            let a = nums[i],
                l = i + 1,
                r = len - 1;
            while(l < r) {
                let b = nums[l],
                    c = nums[r];
                let sum = a + b + c;
                if(sum === 0) {
                    arr.push([a,b,c])
                } 
                if(sum <= 0) {
                    while(nums[l] === b){
                        l++
                    }
                } 
                if(sum >= 0){
                    while(nums[r] === c){
                        r--
                    }
                }
            }
        }
        return arr;
    };

  • 相关阅读:
    克隆节点及添加属性节点
    元素属性的添加删除(原生js)
    清浮动方法
    css样式获取及兼容性(原生js)
    js基础---数据类型转换
    js基础---数字日期及运算
    js基础---object对象
    input询问键盘输入超时自动跳过选择默认值
    xpath定位
    selenium报错问题解决方法
  • 原文地址:https://www.cnblogs.com/joyce123/p/10782961.html
Copyright © 2011-2022 走看看