Cho một mảng arr chứa thông tin độ cao của các cột. Hãy chọn ra 2 trụ trong mảng để có thể chứa được lượng nước lớn nhất trong tất cả trụ đó, và lượng nước chứa được lớn nhất sẽ là bao nhiêu Ví dụ: Với arr = [1,8,6,2,5,4,8,3,7]. Đầu ra maxWater(arr) = 49. Giải thích: Chọn ra 2 trụ độ cao 8 ở vị trí 1 và 7 ở vị trí 8 thì diện tích thu được lớn nhất là 49. Đầu vào/Đầu ra: [Thời gian chạy] 0.5s với C++, 3s với Java và C#, 4s với Python, Go và JavaScript. [Đầu vào] Array of integer arr. 2<=arr.size()<=10^5 0<=arr[i]<=10^5 [Đầu ra] Integer Diện tích nước lớn nhất có thể chứa được.
1 câu trả lời
Python 2:
def maxWater(arr):
left = 0
right = len(arr) - 1
res = 0
while left < right:
res = max(res, min(arr[left], arr[right]) * (right - left))
if arr[left] < arr[right]:
left += 1
else:
right -= 1
return res
Câu hỏi trong lớp
Xem thêm