zoukankan      html  css  js  c++  java
  • 数组_leetcode11

    # 首先,两条线条之间的容积为(x2 - x1) * min(height[x1],  height[x2])
    # 先取最左边直线和最右边直线,这种情况用(0, n-1)表示。
    # 下一步,考虑减少一个单位的宽度的情况,这时候有两种选择:(0, n-2)和(1, n-1)。
    # 对比这两种情况,如果线条的高度height[0] < height[n-1],也就说是第0根线条是“短板”,
    # 那么(0, n-2)的容积肯定会比(0, n-1)的容积小(前者容积为height[0]乘以宽度,
    # 后者的“短板”肯定小于或等于height[0],而宽度变小),因此(0, n-2)的情况可以不用比较,
    # 因此,下一步考虑(1, n-1)的情况,依次类推。时间复杂度为O(n)。

    # 其实就是剪支策略

    # 题解思路:
    # 本质上是一个(a,b)的组合问题 : n2 复杂度
    # 解空间树 的初值 (0,n), 初值搜索的关键
    # 最值问题 在 解空间树上 可以进行剪支 这是一个重要的启示 : 20190302 找工作期间

    class Solution(object):
    def maxArea(self, height):
    """
    :type height: List[int]
    :rtype: int
    """
    left = 0
    right = len(height)-1
    maxArea = -1
    while left < right:
    tempArea = (right -left) * min(height[left],height[right])
    maxArea = max(maxArea,tempArea)

    # 剪支
    if height[left] < height[right]:
    left += 1
    else:
    right -= 1

    return maxArea
  • 相关阅读:
    diary and html 文本颜色编辑,行距和其它编辑总汇
    bash coding to changeNames
    virtualbox ubuntu 网络连接 以及 连接 secureCRT
    linux 学习6 软件包安装
    linux 学习8 权限管理
    vim 使用2 转载 为了打开方便
    ubuntu
    linux 学习15 16 启动管理,备份和恢复
    linux 学习 14 日志管理
    linux 学习 13 系统管理
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10546842.html
Copyright © 2011-2022 走看看