2025.06 11. 盛最多水的容器

题目描述:https://leetcode.cn/problems/container-with-most-water/description/?envType=study-plan-v2&envId=top-100-liked
知识点:双指针
题解:问题的关键在于怎么计算出面积的最大值

  • 找到左右两遍的最大值,min(left,right)*间距计算出最大值
/**
 * @param {number[]} height
 * @return {number}
 */
var maxArea = function (height) {
  if (height.length < 2) return 0
  let left = 0,
    right = height.length - 1
  let leftMax = height[left],
    rightMax = height[right]

  let maxVal = 0
  while (left < right) {
    // 找出最小值计算面积
    let minVal = Math.min(leftMax, rightMax)
    // 判断计算的值如果比之前大则更新
    if (minVal * (right - left) > maxVal) {
      maxVal = minVal * (right - left)
    }
    if (height[left] <= height[right]) {
      left++
      leftMax = height[left]
    } else if (height[left] > height[right]) {
      right--
      rightMax = height[right]
    }
  }
  return maxVal
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容