美文网首页
LeetCode - 3Sum

LeetCode - 3Sum

作者: yingjieg | 来源:发表于2019-04-12 19:49 被阅读0次
    /**
     * @param {number[]} nums
     * @return {number[][]}
     */
    var threeSum = function(nums) {
      if (nums.length < 3) {
        return [];
      }
    
      const sortedNums = nums.sort((a, b) => a - b);
      const length = nums.length;
      const data = [];
    
      for (let i = 0; i < length - 2; i++) {
        if (sortedNums[i] > 0) break;
        if (i > 0 && sortedNums[i] === sortedNums[i - 1]) {
          continue;
        }
    
        let l = i + 1;
        let r = length - 1;
        const target = sortedNums[i];
        while (l < r) {
          if (sortedNums[l] + sortedNums[r] + target === 0) {
            data.push([target, sortedNums[l], sortedNums[r]]);
    
            while (l < r && sortedNums[l] === sortedNums[l + 1]) l++; // ignore duplicate left values
            while (l < r && sortedNums[r] === sortedNums[r - 1]) r--; // ignore duplicate right values
            l++;
            r--;
          } else if (sortedNums[l] + sortedNums[r] + target < 0) { // find next large values.
            l++;
          } else { // find next small values.
            r--;
          }
        }
      }
    
      return data;
    };
    
    

    Success

    Details

    Runtime: 164 ms, faster than 99.23% of JavaScript online submissions for 3Sum.

    Memory Usage: 47 MB, less than 42.73% of JavaScript online submissions for 3Sum.

    相关文章

      网友评论

          本文标题:LeetCode - 3Sum

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