Menu
CoddyTech

Target Sum

Дан массив nums неотрицательных целых чисел и целое число target. Поставьте перед каждым числом знак плюс или минус, сохраните их порядок и вычислите выражение. Верните количество вариантов расстановки знаков, при которых выражение равно target. Каждый из 2^n вариантов считается отдельно, поэтому +0 и -0 — это два разных варианта.

Функция

findTargetSumWays(nums: integer-array, target: integer) → integer
numsinteger-array
числа, каждое из которых получает знак
targetinteger
значение, которому должно быть равно выражение
Возвращаетinteger
количество вариантов знака, выражение для которых равно целевому значению

Ограничения

  • 1 ≤ nums.length ≤ 20
  • 0 ≤ nums[i] ≤ 1000
  • Сумма nums не превышает 1000.
  • -1000 ≤ target ≤ 1000
  • Ответ не превышает 220 и укладывается в диапазон 32-разрядного знакового целого числа.

Примеры

Ввод
nums = [2, 1, 1]target = 2
Вывод
2
Пояснение
+2 +1 -1 и +2 -1 +1 в обоих случаях равны 2. Если поставить минус перед 2, максимальное значение, которого можно достичь, — это -2 + 1 + 1 = 0, поэтому никакой другой вариант не подходит.
challenge icon

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

Можешь ли ты обработать до 40 чисел со значениями до 10^9, если в памяти не помещается массив с индексами по сумме?

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

Тест #1

Тест #2

Тест #3

Аргументы

nums = [2, 1, 1]
target = 2

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

2