聊城做网站的公司效果,专业APP客户端做网站,大专计算机网络技术就业方向,在线制作图标免费题目
给定一个长度为 n 的整数数组 height 。有 n 条垂线#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 找出其中的两条线#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。
示例
输入#xff1a;[1,8,6,2,5,4,8,…题目
给定一个长度为 n 的整数数组 height 。有 n 条垂线第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 找出其中的两条线使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。
示例
输入[1,8,6,2,5,4,8,3,7] 输出49 解释图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下容器能够容纳水表示为蓝色部分的最大值为 49。
解析
这道题用双指针 主要还是得理解了题意才行要求的是最大容器其实也就是最大的面积那求面积的话其实就是宽乘以高宽就是双指针下标之间的距离高就是双指针中高度较小的那个理解了这个后这道题目就不难了。
func maxArea(height []int) int {left : 0right : len(height) - 1res : 0for left right {tmp : (right - left) * min(height[left], height[right])res max(res, tmp)if height[left] height[right] {left} else {right--}}return res
}func max[T int](a, b T) T {if a b {return a}return b
}func min[T int](a, b T) T {if a b {return a}return b
}这里可以注意下如果用的是go 1.21后面的版本就不需要自己定义max和min了只用用就行