精细结构

目录

三数之和

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

var threeSum = function(nums) {

    nums = nums.sort();

    var tmpArr = [];
    for (var i = 0, len = nums.length; i <len; i++) {
        for (var j = i+1;j <len;j++) {
            var tmp = 0 - (nums[i] + nums[j]);
            for (var k = j + 1; k < len; k++) {
                if (nums[k] === tmp) {
                    tmpArr.push([nums[i], nums[j], nums[k]]);
                }
            }
        }
    }

	// 去重处理
    var output = [], len = tmpArr.length;

    if (len > 0) {
        output.push(tmpArr[0]);
    }

    NEXT: for (let i = 1; i <len; i++) {
        let item = tmpArr[i].toString();
        for (let j = 0; j < i; j++) {
            if (tmpArr[j].toString() === item) {
                continue NEXT;
            }
        }
        output.push(tmpArr[i]);
    }

    return output;
};

~~ 问题:

题目中要求答案中不可以包含重复的三元组
但实际还没有去重,等待解决。 ~~

没法做到一次性解决,最后只能单独去重。

链接:https://leetcode-cn.com/problems/3sum