Leecode 的一道算法題,記錄一下

最近在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

閱讀鏈接 : 木桶效應

執行結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章