【发布时间】:2019-03-16 02:23:24
【问题描述】:
这个递归展平函数的运行时间是多少?我的猜测是它是线性的。谁能解释一下为什么?
const arr = [
[14, [45, 60], 6, [47, [1, 2, [14, [45, 60], 6, [47, [1, 2]], 9]]], 9],
];
function flatten(items) {
const flat = [];
items.forEach(item => {
if (Array.isArray(item)) {
flat.push(...flatten(item));
} else {
flat.push(item);
}
});
return flat;
}
【问题讨论】:
-
我也认为它在元素数量上是线性的,因为最终你需要触摸每个元素一次,因为它被移动到一个单级数组。
-
@TimBiegeleisen 尽管
O(N)很直观,但它取决于数组的递归结构,因为正在为每个嵌套数组创建中间缓冲区。
标签: javascript recursion big-o