Menu
CoddyTech

Container With Most Water

Trung bìnhHai con trỏTham lampython iconjava iconcpp iconc iconjs icon+10

Bạn nhận được một danh sách height gồm các số nguyên không âm. Đường thẳng i là một bức tường thẳng đứng có chiều cao height[i], nằm tại vị trí i. Hai đường thẳng bất kỳ cùng với mặt đất tạo thành một vật chứa, có thể chứa lượng nước bằng chiều cao của đường thẳng thấp hơn nhân với khoảng cách giữa hai đường thẳng. Các đường thẳng khác không cản trở. Hãy trả về lượng nước lớn nhất mà một cặp đường thẳng có thể chứa.

Hàm

maxArea(height: integer-array) → integer
heightinteger-array
chiều cao của các đường tại vị trí 0, 1, 2, v.v.
Trả vềinteger
lượng nước tối đa mà hai dòng có thể chứa

Ràng buộc

  • 2 ≤ height.length ≤ 104
  • 0 ≤ height[i] ≤ 104
  • Đáp án tối đa là 108, nên vừa với số nguyên (integer) 32 bit.

Ví dụ

Đầu vào
height = [3, 7, 2, 5, 4, 7, 3, 6]
Đầu ra
36
Giải thích
Hai đường ở vị trí 1 và 7, có chiều cao lần lượt là 7 và 6, cách nhau 6 đơn vị và chứa được 6 × 6 = 36. Hai đường cao nhất, có chiều cao 7 ở vị trí 1 và 5, chỉ chứa được 7 × 4 = 28.
challenge icon

Câu hỏi mở rộng

Ở đây, các đường nằm giữa hai đường của bạn đều bị bỏ qua. Nếu mỗi đường đều là một thanh liền, sẽ có bao nhiêu nước đọng lại giữa tất cả chúng? Bạn cũng có thể tính điều đó trong O(n) không?

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

Kiểm thử #1

Kiểm thử #2

Đối số

height = [3, 7, 2, 5, 4, 7, 3, 6]

Đầu ra mong đợi

36