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

阅读链接 : 木桶效应

执行结果如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值