概述
描述
给定 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
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/container-with-most-water
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
从边界开始 找到较小的边向里遍历
实现
func maxArea(height []int) int {
maxArea := 0
begin := 0
end := len(height) - 1
for end - begin >= 1{
area := Min(height[begin], height[end]) * (end - begin)
if area > maxArea{
maxArea = area
}
if height[begin] == Min(height[begin], height[end]){
begin++
}else{
end--
}
}
return maxArea
}
func Min(a, b int) int {
if a >= b {
return b
} else {
return a
}
}
最后
以上就是聪明黑裤为你收集整理的leetcode 11.盛最多水的容器 golang实现的全部内容,希望文章能够帮你解决leetcode 11.盛最多水的容器 golang实现所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复