Menu
CoddyTech

Last Stone Weight

DễHeappython iconjava iconcpp iconc iconjs icon+10

Bạn có một đống đá, trong đó stones[i] là khối lượng của viên đá i. Ở mỗi lượt, lấy hai viên đá nặng nhất và đập chúng vào nhau. Nếu chúng có khối lượng bằng nhau, cả hai viên đều bị phá hủy. Nếu không, viên nhẹ hơn bị phá hủy, còn khối lượng của viên nặng hơn giảm đi bằng hiệu giữa hai khối lượng.

Hãy viết lastStoneWeight, hàm này thực hiện các lượt cho đến khi còn lại nhiều nhất một viên đá, rồi trả về khối lượng của viên đá đó hoặc 0 nếu không còn viên nào.

Hàm

lastStoneWeight(stones: integer-array) → integer
stonesinteger-array
trọng lượng của những viên đá trong đống
Trả vềinteger
trọng lượng của viên đá cuối cùng, hoặc 0 nếu không còn viên nào

Ràng buộc

  • 1 ≤ stones.length ≤ 104
  • 1 ≤ stones[i] ≤ 1000

Ví dụ

Đầu vào
stones = [3, 9, 4, 6, 2]
Đầu ra
0
Giải thích
9 và 6 để lại 3, sau đó 4 và 3 để lại 1, rồi 3 và 2 để lại thêm một 1. Hai viên đá 1 phá hủy lẫn nhau, nên đáp án là 0.
challenge icon

Câu hỏi mở rộng

Các trọng số tối đa là 1000. Bạn có thể tận dụng giới hạn đó để hoàn thành trong thời gian O(n + W), với W là trọng số lớn nhất, mà không cần heap không?

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

Kiểm thử #1

Kiểm thử #2

Kiểm thử #3

Đối số

stones = [3, 9, 4, 6, 2]

Đầu ra mong đợi

0