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])
})