Menu
CoddyTech

Target Sum

非負整数の配列 nums と整数 target が与えられます。すべての数の前にプラス記号またはマイナス記号を付け、順序を保ったまま式を評価します。式の値が target になる符号の選び方がいくつあるかを返してください。2^n 通りの選び方はそれぞれ個別に数えるため、+0 と -0 は異なる2通りの選び方です。

関数

findTargetSumWays(nums: integer-array, target: integer) → integer
numsinteger-array
それぞれに符号が付く数値
targetinteger
式が等しくなければならない値
戻り値integer
式の値が target と等しくなる符号の選び方の数

制約

  • 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

発展問題

合計値を添字とする配列がメモリに収まらない場合でも、最大10^9の値を持つ数値を最大40個扱えますか?

コードをリセット
def findTargetSumWays(nums, target):
    # ここにコードを書いてください

テスト #1

テスト #2

テスト #3

引数

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

期待される出力

2