Skip to content

78. 子集

78. 子集

代码

javascript
// 78. 子集:https://leetcode.cn/problems/subsets/
// 输入:[1,2,3]
// 输出:[[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]

export function subsets (nums) {
  const res = []
  const dfs = (index, list) => {
    res.push(list)
    for (let i = index; i < nums.length; i++) {
      dfs(i + 1, [...list, nums[i]])
    }
  }
  dfs(0, [])
  return res
}
typescript
// 78. 子集:https://leetcode.cn/problems/subsets/
// 输入:[1,2,3]
// 输出:[[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]]

export function subsets (nums: number[]): number[][] {
  const res: number[][] = []
  const dfs = (index: number, list: number[]) => {
    res.push(list)
    for (let i = index; i < nums.length; i++) {
      dfs(i + 1, [...list, nums[i]])
    }
  }
  dfs(0, [])
  return res
}

测试代码

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

test(`subsets`, () => {
  expect(subsets([1,2,3])).toEqual([[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]])
  expect(subsets([0])).toEqual([[],[0]])
})

test(`subsetsJs`, () => {
  expect(subsetsJs([1,2,3])).toEqual([[],[1],[1,2],[1,2,3],[1,3],[2],[2,3],[3]])
  expect(subsetsJs([0])).toEqual([[],[0]])
})