给你 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 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!