博客
关于我
Python算法_盛最多水的容器(04)
阅读量:445 次
发布时间:2019-03-06

本文共 1129 字,大约阅读时间需要 3 分钟。

给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

说明:你不能倾斜容器,且 n 的值至少为 2。

图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

 

示例:

输入:[1,8,6,2,5,4,8,3,7]

输出:49

 

class Solution:    def maxArea(self, height: List[int]) -> int:        height = list(enumerate(height))        maxArea_list = []        left, right,left_idx, right_idx = height[0][1], height[-1][1], 0, height[-1][0]        while True:            smaller = min(left, right)            area = smaller * (right_idx - left_idx)            maxArea_list.append(area)            n = 0 if left < right else 1            before = right_idx - left_idx            for i in height[left_idx + 1:right_idx][::(-1)**n]:                if i[1] > smaller:                    if n == 0:                        left, left_idx = i[1], i[0]                        break                    else:                        right, right_idx = i[1], i[0]                        break            after = right_idx - left_idx                        if after - before == 0:                return max(maxArea_list)

 

转载地址:http://zekbz.baihongyu.com/

你可能感兴趣的文章
上周热点回顾(5.9-5.15)
查看>>
上周热点回顾(1.23-1.29)
查看>>
云计算之路-阿里云上:14:20-14:55博客后台2台服务器都CPU 100%引发的故障
查看>>
Python 简明教程 --- 20,Python 类中的属性与方法
查看>>
QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)
查看>>
稀疏数组
查看>>
Android MediaPlayer setDataSource failed
查看>>
虚拟机搭建hadoop环境
查看>>
Hibernate入门(四)---------一级缓存
查看>>
[Python学习笔记]组织文件
查看>>
Spring Boot 2.x基础教程:构建RESTful API与单元测试
查看>>
dojo/request模块整体架构解析
查看>>
互联网App应用程序测试流程及测试总结
查看>>
微软XAML Studio - WPF, Sliverlight, Xamarin, UWP等技术开发者的福音
查看>>
(在模仿中精进数据可视化07)星球研究所大坝分布可视化
查看>>
(数据科学学习手札27)sklearn数据集分割方法汇总
查看>>
阿里巴巴Json工具-Fastjson教程
查看>>
Spring security OAuth2.0认证授权学习第二天(基础概念-RBAC)
查看>>
PySide图形界面开发(一)
查看>>
375. Guess Number Higher or Lower II
查看>>