代码随想录 15. 三数之和

var threeSum = function(nums) {

    const res = [], len = nums.length

    nums.sort((a,b) => a - b)

    for(let i = 0; i < len; ++i){

        let l = i + 1, r = len - 1, iNum = nums[i]

        if(iNum > 0) return res

        if(iNum === nums[i-1]) continue

        while(l < r){

            let a = nums[l], b = nums[r], threeSum = a + b + iNum

            if(threeSum > 0) r--

            else if(threeSum < 0) l++

            else{

                res.push([iNum, a, b])

                while(l < r && nums[l + 1] == nums[l]){

                    l++

                }

                while(l < r && nums[r-1] == nums[r]){

                    r--

                }

                l++

                r--

            }

        }

    }

    return res

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值