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]]
Пояснение
После сортировки получаем значения 1, 2, 3, а три значения дают 2^3 = 8 подмножеств. [1, 2] идёт перед [1, 2, 3], потому что является его началом, а [1, 2, 3] идёт перед [1, 3], потому что 2 меньше 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]]