最开始使用暴力解法,而后看过官方思路教程后,写了双指针的解题代码 先展示代码: ``` func maxArea(height []int) int { //双指针 res, i, j := 0, 0, len(height)-1 for i < j { //计算 ares := (j - i) * int(math.Min(float64(height[i]), float64(height[j]))) res = int(math.Max(float64(res), float64(ares))) if height[i] < height[j] { i++ } else { j-- } } return res } ``` 详解:i,j代表最左边和最右边的索引位置。 ares代表储存上一个计算宽度得到的值。 res代表上一个值和目前值进行比对,看谁最大 当最左边大于最右边表示双方指针溢出,所以停止比对循环。 当循环结束后返回最大值。 Loading... 最开始使用暴力解法,而后看过官方思路教程后,写了双指针的解题代码 先展示代码: ``` func maxArea(height []int) int { //双指针 res, i, j := 0, 0, len(height)-1 for i < j { //计算 ares := (j - i) * int(math.Min(float64(height[i]), float64(height[j]))) res = int(math.Max(float64(res), float64(ares))) if height[i] < height[j] { i++ } else { j-- } } return res } ``` 详解:i,j代表最左边和最右边的索引位置。 ares代表储存上一个计算宽度得到的值。 res代表上一个值和目前值进行比对,看谁最大 当最左边大于最右边表示双方指针溢出,所以停止比对循环。 当循环结束后返回最大值。 最后修改:2021 年 07 月 15 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏