Menu
CoddyTech

Minimum Cost of Ropes

Bạn có một số sợi dây, trong đó ropes[i] là độ dài của sợi dây i. Bạn có thể nối hai sợi dây bất kỳ thành một sợi dây có độ dài bằng tổng độ dài của chúng, và chi phí nối cũng bằng tổng đó. Bạn tiếp tục nối cho đến khi chỉ còn một sợi dây.

Viết một hàm có tên minCostRopes trả về tổng chi phí nhỏ nhất để nối tất cả các sợi dây thành một sợi, hoặc 0 nếu ban đầu chỉ có một sợi dây.

Hàm

minCostRopes(ropes: integer-array) → integer
ropesinteger-array
độ dài của mỗi sợi dây
Trả vềinteger
tổng chi phí nhỏ nhất để nối tất cả các sợi dây thành một

Ràng buộc

  • 1 ≤ ropes.length ≤ 104
  • 1 ≤ ropes[i] ≤ 100
  • Đáp án nằm trong phạm vi số nguyên có dấu 32 bit.

Ví dụ

Đầu vào
ropes = [5, 2, 8, 3]
Đầu ra
33
Giải thích
Gộp 2 và 3 thành 5, hai sợi dây có độ dài 5 thành 10, rồi gộp 8 và 10 thành 18. Tổng cộng là 5 + 10 + 18 = 33.
challenge icon

Câu hỏi mở rộng

Giả sử một mối nối có thể ghép tối đa ba sợi dây và chi phí bằng tổng chiều dài của chúng. Quy tắc tham lam thay đổi thế nào khi số lượng dây không chia hết cho ba?

Đặt lại code
def minCostRopes(ropes):
    # Viết code ở đây

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

ropes = [5, 2, 8, 3]

Đầu ra mong đợi

33