web开发重点,CSS外边距塌陷问题,小白看完都会了

27 阅读1分钟

最后

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。

《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》

前端面试题宝典

前端校招面试题详解

开源分享:docs.qq.com/doc/DSmRnRG…

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

输出:49

解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。

复制代码

示例 2:

输入:height = [1,1]

输出:1

复制代码

示例 3:

输入:height = [4,3,2,1,4]

输出:16

复制代码

示例 4:

输入:height = [1,2,1]

输出:2

复制代码

提示:

  • n = height.length

  • 2 <= n <= 3 * 104

  • 0 <= height[i] <= 3 * 104

思路分析

===================================================================

思路一:暴力遍历


逐个尝试每两条 bar 的组合,求出面积,得到最大的组合。

  • 时间复杂度: O(n^2),循环运行 n(n-1)/2 次

  • 空间复杂度: O(1),只使用了常数个变量

tips:

很遗憾,这个算法被 LeetCode 判为超时……

思路二:双指针循环


使用双指针从两端向中心移动,每次移动较矮的那端以做其他的线段尝试,仍然取最大组合。

循环一遍就可以了

  • 时间复杂度:O(n)

  • 空间复杂度:O(1)

AC 代码

====================================================================

题解一:暴力遍历


/**

  • @param {number[]} height

  • @return {number}

*/

var maxArea = function (height) {

if (height.length <= 1) {

return 0

}

let maxArea = 0

let area = 0

let minBar = 0

for (let i = 0; i < height.length; i++) {

for (let j = i + 1; j < height.length; j++) {

minBar = Math.min(height[i], height[j])

area = minBar * (j - i)

maxArea = Math.max(maxArea, area)

}

}

return maxArea

}

复制代码

题解二:双指针循环


/**

  • @param {number[]} height

  • @return {number}

*/

var maxArea = function (height) {

let left = 0

let right = height.length - 1

let result = 0

while (left < right) {

最后

前15.PNG

前16.PNG

由于文档内容过多,为了避免影响到大家的阅读体验,在此只以截图展示部分内容

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】