每日两题 T28

时间:2022-07-22
本文章向大家介绍每日两题 T28,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

算法

LeetCode T11. 盛最多水的容器[1]

描述

给你 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;
};

前端

说说Promises/A+规范

术语介绍

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规范中,asyncawait 处理异步的方式是 Promise + generator 实现,具体实现与规范明天的内容阐述。

References

[1] 11. 盛最多水的容器: https://leetcode-cn.com/problems/container-with-most-water/