2017-02-11 53 views
0

我知道递归的方式来压扁嵌套数组。 在stackoverflow上有几种解决方案(都在javajavascript - 一些使用内置库)。是否有更高效的算法来压扁数组?

但这些解决方案的时间复杂度是O(n^2)! 我想知道是否有一个算法可以做得更好。

在此先感谢您的帮助!

+6

它们看起来像O(n),其中n是元素的数量。我不明白你会如何比这更好。 –

+0

是你所指的数组n的维数,但是如果n是它考虑的元素的数量O(n) – mc20

+0

你链接的JavaScript问题中的“Adam”的答案是线性的,而不是二次的。 @VinceEmigh当在线性时间内做它微不足道是不合理的:) – Pointy

回答

3

您要么是弄错了,要么将您的n定义为要处理的元素数的根平方。

数组展平问题的所有解决方案都是O(n),其中n取决于元素的总数(因为实际上,您需要扫描它们全部,每个元素只有一次)。展平数组不是一个算法问题,而只是将它放在一个“优雅”片段中的问题。

+0

我明白了。如果我错了,请纠正我,但可以肯定地说它是伪多项式吗? –

+1

@KarthikVasishta big-O总是多项式的最高阶。 –

+0

谢谢@PeterLawrey –