美文网首页
找出所有满足条件且不重复的三元组

找出所有满足条件且不重复的三元组

作者: peerben | 来源:发表于2019-04-02 20:39 被阅读0次

    练手


    WechatIMG1157.png

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

    粗略想了一下, 可以转化为 b+c = -a, 这样简化, 并不难.
    感觉自己的水平提高了...

    function threeSumZero(numList: number[]) {
      const tsList : Array<number[]>= [];
    
      numList.forEach((val, index) => {
        const restList = numList.slice(index + 1);
    
        restList.forEach((cur, index, arr) => {
          arr.slice(index + 1).some(v => (val + cur + v === 0) && !!tsList.push([val, cur, v]));
        });
      });
    
      // 去重
      const sortList = tsList.map(arr => arr.sort((a, b) => a - b).join('.'));
      const resList = Array.from(new Set(sortList)).map(str => str.split('.'));
    
      return resList;
    }
    
    const res = threeSumZero([-1, 0, 1, 2, -1, -4]);
    console.log(`res ${JSON.stringify(res)}`);
    

    打印

    res [["-1","0","1"],["-1","-1","2"]]
    

    相关文章

      网友评论

          本文标题:找出所有满足条件且不重复的三元组

          本文链接:https://www.haomeiwen.com/subject/gupnbqtx.html