给你 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本题解法类似 盛雨水 ,使用双指针。
/**
* @param {number[]} height
* @return {number}
*/
var maxArea = function (height) {
let i = 0, j = height.length - 1;
let square, max = 0;
while (j - i >= 1) {
if (height[i] > height[j]) {
square = height[j] * (j - i);
j--;
} else {
square = height[i] * (j - i);
i++;
}
max = Math.max(square, max);
}
return max;
};术语介绍
promise:是一个拥有then方法的对象或函数,其行为符合本规范thenable:是一个定义了then方法的对象或函数。这个主要是用来兼容一些老的Promise实现,只要一个Promise实现是thenable,也就是拥有then方法的,就可以跟Promises/A+兼容。value:指reslove出来的值,可以是任何合法的JS值(包括undefined, thenable 和 promise等)exception:异常,在Promise里面用throw抛出来的值reason:拒绝原因,是reject里面传的参数,表示reject的原因
状态
pending: 一个promise在resolve或者reject前就处于这个状态。fulfilled: 一个promise被resolve后就处于fulfilled状态,这个状态不能再改变,而且必须拥有一个不可变的值(value)。rejected: 一个promise被reject后就处于rejected状态,这个状态也不能再改变,而且必须拥有一个不可变的拒绝原因(reason)。
then方法
promise.then(fulfilledFn, rejectedFn)catch方法
promise.catch(rejectedFn)当然在新的ES规范中,async 、await 处理异步的方式是 Promise + generator 实现,具体实现与规范明天的内容阐述。
[1] 11. 盛最多水的容器: https://leetcode-cn.com/problems/container-with-most-water/
本文分享自 JavaScript全栈 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!