• 数组_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
  • 相关阅读:
    四、java IO--使用字节流拷贝文件
    三、java IO--使用字节流写入文件
    二、java IO--使用字节流读取文件
    一、java--IO概念
    xml解析/读取--dom4j
    java程序执行顺序
    Flask学习——cookie操作
    Linux13 shell函数、数组及awk、awk中的数组
    Linux12 RPM 和yum的使用
    Linux11 IP网段划分及主机接入网络
  • 原文地址:https://www.cnblogs.com/lux-ace/p/10546842.html
Copyright © 2020-2023  润新知