Skip to content

75. 颜色分类

75. 颜色分类

代码

javascript
// 75. 颜色分类:https://leetcode.cn/problems/sort-colors/
// 输入:[2,0,2,1,1,0]
// 输出:[0,0,1,1,2,2]

export function sortColors (nums) {
  let p0 = 0
  let p2 = nums.length - 1
  for (let i = 0; i <= p2; i++) {
    while (i <= p2 && nums[i] === 2) {
      [nums[i], nums[p2]] = [nums[p2], nums[i]]
      p2--
    }
    if (nums[i] === 0) {
      [nums[i], nums[p0]] = [nums[p0], nums[i]]
      p0++
    }
  }
}
typescript
// 75. 颜色分类:https://leetcode.cn/problems/sort-colors/
// 输入:[2,0,2,1,1,0]
// 输出:[0,0,1,1,2,2]

export function sortColors (nums: number[]): void {
  let p0 = 0
  let p2 = nums.length - 1
  for (let i = 0; i <= p2; i++) {
    while (i <= p2 && nums[i] === 2) {
      [nums[i], nums[p2]] = [nums[p2], nums[i]]
      p2--
    }
    if (nums[i] === 0) {
      [nums[i], nums[p0]] = [nums[p0], nums[i]]
      p0++
    }
  }
}

测试代码

ts
import { expect, test } from 'vitest'
import { sortColors } from './typescript.ts'
import { sortColors as sortColorsJs } from './javascript.js'

test(`sortColors`, () => {
  const nums = [2,0,2,1,1,0]
  sortColors(nums)
  expect(nums).toEqual([0,0,1,1,2,2])

  const nums1 = [2,0,1]
  sortColors(nums1)
  expect(nums1).toEqual([0,1,2])
})

test(`sortColorsJs`, () => {
  const nums = [2,0,2,1,1,0]
  sortColorsJs(nums)
  expect(nums).toEqual([0,0,1,1,2,2])

  const nums1 = [2,0,1]
  sortColorsJs(nums1)
  expect(nums1).toEqual([0,1,2])
})