JavaScriptTypeScript for LeetCode (147)

    科技2026-02-12  23

    是差点运气,可我一直在努力!

    当前进程:

    开始时间:2020.6.27结束时间:undefined

    GitHub仓库:https://github.com/Cundefined/JavaScript-or-TypeScript-for-LeetCode

    1、题目要求

    ( LeetCode - 第75题 ) 颜色分类

    2、解题思路

    方法:双指针

    【荷兰国旗问题】 1、创建两个边界,规定boundary1左边应该全是0,boundary2右边全是2 2、i指针复制遍历数组,遇到boundary2边界就停止

    2.1、JavaScript Solution

    /** * @param {number[]} nums * @return {void} Do not return anything, modify nums in-place instead. */ var sortColors = function (nums) { let boundary1 = 0; let boundary2 = nums.length - 1; for (let i = 0; i <= boundary2; i++) { if (nums[i] === 0) { swap(nums, i, boundary1); boundary1++; } if (nums[i] === 2) { swap(nums, i, boundary2); boundary2--; i--; } } return nums; }; function swap(nums, i, j) { let temp = nums[i]; nums[i] = nums[j]; nums[j] = temp; }

    2.2、TypeScript Solution

    /** Do not return anything, modify nums in-place instead. */ function sortColors(nums: number[]): void { let boundary1: number = 0; let boundary2: number = nums.length - 1; for (let i: number = 0; i <= boundary2; i++) { if (nums[i] === 0) { swap(nums, i, boundary1); boundary1++; } if (nums[i] === 2) { swap(nums, i, boundary2); boundary2--; //i--的目的是让下次i停在原处,因为是从boundary2换过来的,还需要留着和boundary1交换 i--; } } } function swap(nums: number[], i: number, j: number) { let temp: number = nums[i]; nums[i] = nums[j]; nums[j] = temp; }
    Processed: 0.013, SQL: 9