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