再谈前端算法,你这回明白了吗?( 三 )


直接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. 1. find():返回数组中符合测试函数条件的第一个元素值 。
const numbers = [10, 20, 30, 40];const result = numbers.find(num => num > 25);// 结果为30
  1. 2. findIndex():返回数组中符合测试函数条件的第一个元素索引 。
const numbers = [10, 20, 30, 40];const index = numbers.findIndex(num => num > 25);// 结果为2(即元素30对应的索引)
  1. 3. forEach():对数组的每个元素执行提供的函数 。
const numbers = [1, 2, 3];numbers.forEach(num => console.log(num * 2));// 输出2, 4, 6
  1. 4. map():对数组的每个元素执行提供的函数 , 并返回结果组成的新数组 。
 const numbers = [1, 2, 3];const doubled = numbers.map(num => num * 2);// 结果为[2, 4, 6]
  1. 5. filter():使用给定函数测试所有元素,并返回由所有通过测试的元素组成的新数组 。
const numbers = [10, 15, 20, 25, 30];const greaterThan20 = numbers.filter(num => num > 20);// 结果为[25, 30]这些方法在处理数组时非常有用,并且能够简化一些常见的操作 。



推荐阅读