Menu
CoddyTech

Coin Change

Trung bìnhQuy hoạch độngpython iconjava iconcpp iconc iconjs icon+10

Bạn có danh sách coins gồm các giá trị xu khác nhau và một amount mục tiêu. Bạn có thể dùng mỗi giá trị xu bao nhiêu lần tùy ý. Hãy trả về số xu ít nhất có tổng giá trị đúng bằng amount, hoặc -1 nếu không có cách kết hợp xu nào đạt được tổng đó. Với amount bằng 0, cần 0 xu.

Hàm

coinChange(coins: integer-array, amount: integer) → integer
coinsinteger-array
các mệnh giá xu khác nhau, mỗi mệnh giá có thể dùng bất kỳ số lần nào
amountinteger
tổng số tiền cần thanh toán chính xác
Trả vềinteger
số xu ít nhất cần dùng, hoặc -1 nếu không thể tạo ra số tiền đó

Ràng buộc

  • 1 ≤ coins.length ≤ 12
  • 1 ≤ coins[i] ≤ 104
  • 0 ≤ amount ≤ 104
  • Tất cả giá trị xu đều khác nhau.

Ví dụ

Đầu vào
coins = [2, 5, 10]amount = 27
Đầu ra
4
Giải thích
10 + 10 + 5 + 2 tạo thành 27 bằng bốn đồng xu. Ba đồng xu không đủ: 27 là số lẻ, nên cần đúng một đồng 5, còn hai đồng kia cộng lại nhiều nhất là 20, chưa đủ 22.
challenge icon

Câu hỏi mở rộng

Bạn có thể đếm số cách kết hợp các đồng xu để tổng bằng amount không, thay vì tìm số đồng xu ít nhất?

Đặt lại code
def coinChange(coins, amount):
    # Viết code tại đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

coins = [2, 5, 10]
amount = 27

Đầu ra mong đợi

4