Menu
CoddyTech

Target Sum

Kamu mendapatkan sebuah array nums berisi bilangan bulat nonnegatif dan sebuah bilangan bulat target. Letakkan tanda plus atau minus di depan setiap angka, pertahankan urutannya, lalu hitung nilai ekspresinya. Kembalikan jumlah pilihan tanda yang membuat ekspresi bernilai target. Setiap satu dari 2^n pilihan dihitung secara terpisah, jadi +0 dan -0 adalah dua pilihan yang berbeda.

Fungsi

findTargetSumWays(nums: integer-array, target: integer) → integer
numsinteger-array
angka-angka, yang masing-masing mendapat tanda
targetinteger
nilai yang harus sama dengan ekspresi
Mengembalikaninteger
jumlah pilihan tanda yang ekspresinya sama dengan target

Batasan

  • 1 ≤ nums.length ≤ 20
  • 0 ≤ nums[i] ≤ 1000
  • Jumlah nums paling banyak 1000.
  • -1000 ≤ target ≤ 1000
  • Jawabannya paling banyak 220, jauh di bawah batas bilangan bulat bertanda 32-bit.

Contoh

Input
nums = [2, 1, 1]target = 2
Output
2
Penjelasan
+2 +1 -1 dan +2 -1 +1 keduanya sama dengan 2. Dengan tanda minus pada 2, nilai terbesar yang bisa kamu capai adalah -2 + 1 + 1 = 0, jadi tidak ada pilihan lain yang berhasil.
challenge icon

Pertanyaan lanjutan

Bisakah kamu menangani hingga 40 angka dengan nilai hingga 10^9, saat tidak ada array yang diindeks berdasarkan jumlah yang muat di memori?

Reset kode
def findTargetSumWays(nums, target):
    # Tulis kodemu di sini

Tes #1

Tes #2

Tes #3

Argumen

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

Output yang diharapkan

2