Zheaoli / do-something-right

MIT License
37 stars 3 forks source link

2022-09-12 #358

Open Zheaoli opened 2 years ago

Zheaoli commented 2 years ago

2022-09-12

Dapeus commented 2 years ago

image

gongpeione commented 2 years ago
/*
 * @lc app=leetcode id=15 lang=typescript
 *
 * [15] 3Sum
 */

// @lc code=start
function threeSum(nums: number[]): number[][] {
    const ans = [] as number[][];

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

    for (let i = 0; i < nums.length; i++) {
        const firstEl = nums[i];

        // eliminate bad case
        if (firstEl > 0) {
            break;
        }
        if (firstEl === nums[i - 1]) {
            continue;
        }

        // two sum ii
        let left = i + 1;
        let right = nums.length - 1;
        while (left < right) {
            const result = firstEl + nums[left] + nums[right];
            if (result > 0) {
                right--;
            } else if (result < 0) {
                left++;
            } else {
                ans.push([firstEl, nums[left], nums[right]]);

                // eliminate the case that next val is equals to prev one
                left++;
                while (nums[left] === nums[left - 1]) {
                    left++;
                }
            }
        }
    }

    return ans;
};
// @lc code=end

微信id: 弘树 来自 vscode 插件