Menu
CoddyTech

Subsets

你会得到一个由互不相同的整数构成的列表 nums。返回它的所有子集,包括空集和完整列表,因此 n 个值会得到 2^n 个子集。每个子集中的值都按升序排列,子集也按字典序排列:逐个比较两个子集中的值,第一个不同的值决定顺序;如果一个子集是另一个子集的开头,则较短的子集排在前面。对于 [1, 2],答案是 [[], [1], [1, 2], [2]]。

函数

subsets(nums: integer-array) → integer-2d-array
numsinteger-array
所有值都各不相同,顺序任意
返回值integer-2d-array
每个子集都按升序排列,并按字典序列出

约束条件

  • 1 ≤ nums.length ≤ 10
  • -10 ≤ nums[i] ≤ 10
  • nums 中的所有值都不同。
  • nums 的顺序可以是任意的。

示例

输入
nums = [3, 1, 2]
输出
[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]
解释
三个值会产生 2^3 = 8 个子集。[1, 2] 排在 [1, 2, 3] 前面,因为它是后者的开头;而 [1, 2, 3] 排在 [1, 3] 前面,因为在第二个位置上,2 小于 3。
challenge icon

进阶

你能不使用递归,直接根据前一个子集构建每个子集,生成相同的列表吗?

重置代码
def subsets(nums):
    # 在这里编写代码

测试 #1

测试 #2

测试 #3

参数

nums = [3, 1, 2]

预期输出

[[], [1], [1, 2], [1, 2, 3], [1, 3], [2], [2, 3], [3]]