欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Leecode 的一道算法题,记录一下

程序员文章站 2022-05-12 14:01:47
...
最近在LeetCode上面刷题,发现了一道有趣的题,以下是他的题目概述:

Leecode 的一道算法题,记录一下
首先,我们通过分析题目了解他大概的问题和需求,其实当中最重要的是如何找到最大的面积,但是又不能以两个数据最大值的来计算,我们还要分析他的长与宽,话不多说,献上代码,里面有每一句的注释。

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

阅读链接 : 木桶效应

执行结果如下:
Leecode 的一道算法题,记录一下