Menu
CoddyTech

Subsets

異なる整数のリスト nums が与えられます。空の部分集合とリスト全体を含む、すべての部分集合を返してください。つまり、n 個の値からは 2^n 個の部分集合が得られます。各部分集合の値は昇順に並べ、部分集合は辞書順に並べてください。2つの部分集合を値ごとに比較し、最初に異なる値で順序を決めます。一方の部分集合がもう一方の先頭部分と一致する場合は、短い方を先にします。[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]]
説明
並べ替えると、値は 1、2、3 で、3つの値からは 2^3 = 8 個の部分集合ができます。[1, 2] は [1, 2, 3] より前に来ます。これは前者が後者の先頭部分だからです。また、2番目の位置では 2 が 3 より小さいため、[1, 2, 3] は [1, 3] より前に来ます。

lock icon提出時に隠しテスト+13件

challenge icon

発展問題

再帰を使わずに、直前の部分集合からそれぞれを直接作って、同じリストを生成できますか?

コードをリセット
def subsets(nums):
    # ここにコードを書いてください
テストケース

ケース1

ケース2

ケース3

入力

nums = [3, 1, 2]

期待値

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