Menu
CoddyTech

4Sum

Дан список целых чисел nums и целое число target. Верните все четверки [a, b, c, d], в которых четыре значения находятся на четырех разных позициях в nums и в сумме дают target. Записывайте значения каждой четверки в неубывающем порядке. Если те же четыре значения можно выбрать с разных позиций, четверка все равно должна появиться только один раз. Отсортируйте ответ сначала по первому значению, затем по второму, затем по третьему. Если подходящих четверок нет, верните пустой список.

Функция

fourSum(nums: integer-array, target: integer) → integer-2d-array
numsinteger-array
числа для выбора, хотя бы одно
targetinteger
сумма, которой должна достигать каждая четвёрка
Возвращаетinteger-2d-array
различные четверки с суммой target, каждая отсортирована, и сам список тоже отсортирован; пустой список, если таких нет

Ограничения

  • 1 ≤ nums.length ≤ 200
  • -108 ≤ nums[i] ≤ 108
  • -109 ≤ target ≤ 109
  • Сумма любых четырёх значений находится в диапазоне от -4 × 108 до 4 × 108, поэтому она помещается в 32-битное целое число.
  • Четверки, содержащие одни и те же четыре значения, считаются одной.

Примеры

Ввод
nums = [3, -1, 0, 2, -2, 1, -3]target = 1
Вывод
[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]
Пояснение
Сумма каждой из четырёх четвёрок равна 1, например -3 + (-1) + 2 + 3. Сначала идут две, начинающиеся с -3, упорядоченные по второму значению: -1 перед 0.
challenge icon

Дополнительный вопрос

Подсчитайте наборы из четырёх позиций, значения которых в сумме дают target, а не различные четверки. Во втором примере их 15. Сможете сделать это за O(n²)?

Сбросить код
def fourSum(nums, target):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

nums = [3, -1, 0, 2, -2, 1, -3]
target = 1

Ожидаемый вывод

[[-3, -1, 2, 3], [-3, 0, 1, 3], [-2, -1, 1, 3], [-2, 0, 1, 2]]