[JavaScript]数组中相加和为0的三元组

数组中相加和为0的三元组

  • 描述
  • 示例
  • 代码

描述

给出一个有n个元素的数组S,S中是否有元素a,b,c满足a+b+c=0?找出数组S中所有满足条件的三元组。
注意:
三元组(a、b、c)中的元素必须按非降序排列。(即a≤b≤c)
解集中不能包含重复的三元组。

示例

输入:
[-2,0,1,1,2]
返回值:
[[-2,0,2],[-2,1,1]]

代码

/**
 * 
 * @param num int整型一维数组 
 * @return int整型二维数组
 */
function threeSum( num ) {
    // write code here
    const ans=new Set()
    let newNum=num.sort((a,b)=>{
        return a-b
    })
    for(let i=0;i<newNum.length;i++){
        let target=-newNum[i]
        for(let j=i+1;j<newNum.length;j++){
            if(newNum.indexOf(target-newNum[j],j+1)!==-1){
                let index=num.indexOf(target-num[j])
                let temp=[]
                temp.push(num[i])
                temp.push(num[j])
                temp.push(num[index])
                ans.add(temp)
                while(num[j]==num[j+1]) j++
            }
        }
        while(num[i]==num[i+1]) i++
    }
    return Array.from(ans)
}
module.exports = {
    threeSum : threeSum
};

你可能感兴趣的:(JavaScript刷题,javascript)