【算法题】 计算数组深度

这是笔试的时候遇到的算法题,明明很简单的一道题有点紧张居然只做到60%的通过率。。

题目描述

给定一个数组,求出数组的深度。(不能使用计算括号的方法)

解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function deepCalc(arr, deep) {
let res = []

for (let i = 0; i < arr.length; i++) {
// 是否是数组
if (Array.isArray(arr)) {
res.push(...arr[i])
}
}

if (res.length === 0) {
return deep
} else {
return deepCalc(res, ++deep)
}
}

开始写的时候纯粹用了队列来处理数组内的数组,导致同级的数组会叠加深度,实际上只要把同级的数组重新递归下去就可以了