Menu
CoddyTech

Combination Sum

Trung bìnhQuay luipython iconjava iconcpp iconc iconjs icon+10

Bạn có một danh sách candidates gồm các số nguyên dương khác nhau và một số nguyên dương target. Hãy tìm mọi tổ hợp các số trong danh sách có tổng đúng bằng target, mỗi số có thể được dùng bao nhiêu lần tùy ý. [2, 3, 3] và [3, 2, 3] là cùng một tổ hợp.

Trả về từng tổ hợp theo thứ tự tăng dần và các tổ hợp theo thứ tự từ điển: tại vị trí đầu tiên mà hai tổ hợp khác nhau, tổ hợp có giá trị nhỏ hơn sẽ đứng trước.

Hàm

combinationSum(candidates: integer-array, target: integer) → integer-2d-array
candidatesinteger-array
các giá trị khác nhau bạn có thể dùng, theo thứ tự bất kỳ và bao nhiêu lần tùy thích
targetinteger
Tổng của mọi tổ hợp phải đạt chính xác
Trả vềinteger-2d-array
mọi tổ hợp có tổng bằng mục tiêu, mỗi tổ hợp được sắp xếp theo thứ tự tăng dần và các tổ hợp được liệt kê theo thứ tự từ điển

Ràng buộc

  • 1 ≤ candidates.length ≤ 50
  • 2 ≤ candidates[i] ≤ 500
  • 2 ≤ target ≤ 500
  • Tất cả giá trị trong candidates đều khác nhau, không theo thứ tự cụ thể nào.
  • Ít nhất một tổ hợp đạt đến target, và nhiều nhất 150 tổ hợp đạt đến.

Ví dụ

Đầu vào
candidates = [6, 2, 3]target = 8
Đầu ra
[[2, 2, 2, 2], [2, 3, 3], [2, 6]]
Giải thích
Bốn số 2, 2 + 3 + 3 và 2 + 6 đều bằng 8, được sắp xếp theo giá trị thứ hai. Không có số 2 thì chỉ còn các số 3 và 6, tổng của chúng là bội số của 3, mà 8 không phải là bội số của 3.
challenge icon

Câu hỏi mở rộng

Mỗi ứng viên giờ chỉ có thể được dùng nhiều nhất một lần, và candidates có thể chứa các giá trị lặp lại. Bạn thay đổi cách tìm kiếm như thế nào để không có tổ hợp nào xuất hiện hai lần?

Đặt lại code
def combinationSum(candidates, target):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

candidates = [6, 2, 3]
target = 8

Đầu ra mong đợi

[[2, 2, 2, 2], [2, 3, 3], [2, 6]]