数组扁平化(迭代、递归)
2021-02-03 19:17
标签:sar 一个 iter isa 结构 元素 font -- turn 测试用例 [[1, [2, [3, [11, 12, [13]], [14], [[15]], 4, 5, 6]], 5, 7],9,[1, 2],[[4, 5, [6]]]] 1.迭代 迭代方法会考虑到数组输出顺序。为了保证结果数组与原数组中的元素顺序一致,会用到一个栈结构。每次循环判断栈顶元素是否是数组,如果是数组就弹出,然后循环该数组逆序入栈。再进行循环,直到栈顶元素不是数组,结束当前循环,弹出栈顶元素,放入结果数组中。
数组扁平化(迭代、递归) 标签:sar 一个 iter isa 结构 元素 font -- turn 原文地址:https://www.cnblogs.com/tengyijun/p/12800311.htmlfunction flat_iteration(arr) {
const ans = []
const stack = [arr]
while (stack.length) {
while (Array.isArray(stack[stack.length - 1])) {
const temp = stack.pop()
for (let i = temp.length - 1; i >= 0; i--) stack.push(temp[i])
}
if (stack.length) ans.push(stack.pop())
}
return ans
}
2.递归
function flat_recursion(arr) {
const ans = []
function dfs(x) {
if (Array.isArray(x)) {
for (let i = 0, len = x.length; i ) dfs(x[i])
} else {
ans.push(x)
}
}
dfs(arr)
return ans
}