直接return 上面层序的lengh
/** * @param {TreeNode} root * @return {number[][]} */var maxDepth = function(root) {if(!root) return []let queue = [root]let result = []// 开始遍历while(queue.length){let temQueue = []let temResult = []let len = queue.lengthfor(let i = 0; i < len; i++){let node = queue.shift()temResult.push(node.val)node.left && temQueue.push(node.left)node.right && temQueue.push(node.right)}// 循环完毕result.push(temResult)temResult = []queue = temQueue}return result.length};
使用DP方法
let maxDepth = function(root){if(!root) return 0 // 如果没有根节点 , 则直接返回0// 找左右叉的最大值return Math.max(maxDepth(root.left),maxDepth(root.right)) + 1}
类数组转数组有多少种方法const arrayLike = document.querySelectorAll('div')
文章插图
图片
扩展运算符
[...arrayLike]
prototypeArray.prototype.slice.call(arrayLike) Array.prototype.concat.Apply([],arrayLike)
Array.fromArray.from(arrayLike)
Array.applyArray.apply(null,arrayLike)
扩展:数组常用哪些方法?数组常用方法很多 , 主要包括以下几个:- 1. find():返回数组中符合测试函数条件的第一个元素值 。
const numbers = [10, 20, 30, 40];const result = numbers.find(num => num > 25);// 结果为30
- 2. findIndex():返回数组中符合测试函数条件的第一个元素索引 。
const numbers = [10, 20, 30, 40];const index = numbers.findIndex(num => num > 25);// 结果为2(即元素30对应的索引)
- 3. forEach():对数组的每个元素执行提供的函数 。
const numbers = [1, 2, 3];numbers.forEach(num => console.log(num * 2));// 输出2, 4, 6
- 4. map():对数组的每个元素执行提供的函数 , 并返回结果组成的新数组 。
const numbers = [1, 2, 3];const doubled = numbers.map(num => num * 2);// 结果为[2, 4, 6]
- 5. filter():使用给定函数测试所有元素,并返回由所有通过测试的元素组成的新数组 。
const numbers = [10, 15, 20, 25, 30];const greaterThan20 = numbers.filter(num => num > 20);// 结果为[25, 30]
这些方法在处理数组时非常有用,并且能够简化一些常见的操作 。推荐阅读
- 17个有用的CLI命令,作为前端工程师,你需要知道一下
- 前端的十个问题,你知道几个?
- 前端性能优化应该怎么做?
- 强化学习算法在资源调度与优化中的应用
- 时序分析中的常用算法,都在这里了
- C++编程实践:IP哈希负载均衡算法
- STL背后的设计原则:了解STL的迭代器、容器和算法的设计哲学
- 算法工程师年薪百万元,缺口百万
- 前端请求到后端API的中间件流程解析
- Vue 微前端开发的七大神器