贪心

2022-07-31  本文已影响0人  每皮1024

题目

一、11. 盛最多水的容器

func maxArea(height []int) int {
    len := len(height)
    if len < 2 {
        return 0
    }

    left, right, res := 0, len-1, 0
    for left < right {
        cur := (right-left) * minOf(height[left], height[right])
        res = maxOf(res, cur)
        // 以下就是贪心的思想,假设左边的挡板比右边的挡板要低
        // 那么右边的挡板不会想要左移,因为左移碰到的任何一种情况,都不会比当前能盛更多的水
        // 所以只能让左边的挡板往右移
        // 反之亦然:看 else 的判断
        if height[left] < height[right] {
            left++
        } else {
            right--
        }
    }
    return res
}

func maxOf(a, b int) int {
    if a > b {
        return a
    }
    return b
}

func minOf(a, b int) int {
    if a > b {
        return b
    }
    return a
}
上一篇 下一篇

猜你喜欢

热点阅读