Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

盛最多水的容器 #1

Open
bWhirring opened this issue Dec 19, 2019 · 1 comment
Open

盛最多水的容器 #1

bWhirring opened this issue Dec 19, 2019 · 1 comment
Labels

Comments

@bWhirring
Copy link
Owner

给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

image
输入: [1,8,6,2,5,4,8,3,7] 输出: 49

@bWhirring
Copy link
Owner Author

暴力破解

var maxArea = function (height) {
  let max = 0
  for (let i = 0; i < height.length - 1; i++) {
    for (let j = 1; j < height.length; j++) {
      const min = Math.min(height[i], height[j])
      const area = min * (j - i)
      if (area > max) max = area
    }
  }
  return max
}

双指针

var maxArea = function (height) {
  let max = 0
  let l = 0
  let r = height.length - 1
  while (l < r) {
    if (height[l] < height[r]) {
      max = Math.max(max, (r - l) * height[l])
      l++
    } else {
      max = Math.max(max, (r - l) * height[r])
      r--
    }
  }
  return max
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant