Menu
CoddyTech

Target Sum

Bạn nhận được một mảng nums gồm các số nguyên không âm và một số nguyên target. Đặt dấu cộng hoặc dấu trừ trước mỗi số, giữ nguyên thứ tự rồi tính giá trị biểu thức. Hãy trả về số cách chọn dấu để biểu thức bằng target. Mỗi cách trong 2^n cách đều được tính riêng, vì vậy +0 và -0 là hai cách chọn khác nhau.

Hàm

findTargetSumWays(nums: integer-array, target: integer) → integer
numsinteger-array
các số, mỗi số đều có một dấu
targetinteger
giá trị mà biểu thức phải bằng
Trả vềinteger
số lựa chọn dấu mà biểu thức của chúng bằng giá trị mục tiêu

Ràng buộc

  • 1 ≤ nums.length ≤ 20
  • 0 ≤ nums[i] ≤ 1000
  • Tổng của nums tối đa là 1000.
  • -1000 ≤ target ≤ 1000
  • Đáp án tối đa là 220, nằm gọn trong phạm vi số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
nums = [2, 1, 1]target = 2
Đầu ra
2
Giải thích
+2 +1 -1 và +2 -1 +1 đều bằng 2. Nếu đặt dấu trừ trước số 2, giá trị lớn nhất bạn có thể đạt được là -2 + 1 + 1 = 0, nên không có lựa chọn nào khác phù hợp.
challenge icon

Câu hỏi mở rộng

Bạn có thể xử lý tối đa 40 số có giá trị lên đến 10^9 khi không thể lưu trong bộ nhớ một mảng có chỉ số theo tổng không?

Đặt lại code
def findTargetSumWays(nums, target):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

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

Đầu ra mong đợi

2