最近在LeetCode上面刷題,發現了一道有趣的題,以下是他的題目概述:
首先,我們通過分析題目瞭解他大概的問題和需求,其實當中最重要的是如何找到最大的面積,但是又不能以兩個數據最大值的來計算,我們還要分析他的長與寬,話不多說,獻上代碼,裏面有每一句的註釋。
list = [1,8,6,2,5,4,8,3,7]
# 數組最左邊的起始位置
left = 0
# 數組最右邊的起始位置
right = len(list) - 1
# 初始化最大面積
max_area = 0
# 死循環走完每一個位置的數組
while left < right:
# 判斷如果右邊的值大於左邊的值 高就爲左邊的否則反之 因爲是注水問題,需要選擇最短的那個條邊
# 類似於木桶效應問題,如果不懂可以查看下方鏈接
height = list[left] if list[left] < list[right] else list[right]
# 計算面積公式 選出最大值
max_area = max(max_area,(right - left) * height)
# 判斷數組中的值 如果左邊的小於右邊的那麼左邊的位置的加 1 否則反之
if list[left] < list[right]:
left += 1
else:
right -= 1
print(max_area
閱讀鏈接 : 木桶效應
執行結果如下: