Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有更有效的算法来展平阵列?_Javascript_Java_Arrays_Algorithm - Fatal编程技术网

Javascript 是否有更有效的算法来展平阵列?

Javascript 是否有更有效的算法来展平阵列?,javascript,java,arrays,algorithm,Javascript,Java,Arrays,Algorithm,我知道将嵌套数组展平的递归方法。 stackoverflow有几种解决方案(包括内置库和内置库) 但是这些解的时间复杂度是O(n^2)! 我想知道是否有一种算法可以做得更好 提前感谢您的帮助 要么您弄错了,要么您将n定义为要处理的元素数的平方根 阵列展平问题的所有合理解决方案都是O(n),其中n取决于元素的总数(因为,本质上,您需要扫描所有元素,每个元素只扫描一次)。展平数组不是一个算法问题,只是将其放入一个“优雅”的片段中的问题。您可能弄错了,或者您将n定义为要处理的元素数的平方根 阵列展平问

我知道将嵌套数组展平的递归方法。 stackoverflow有几种解决方案(包括内置库和内置库)

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


提前感谢您的帮助

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


阵列展平问题的所有合理解决方案都是O(n),其中n取决于元素的总数(因为,本质上,您需要扫描所有元素,每个元素只扫描一次)。展平数组不是一个算法问题,只是将其放入一个“优雅”的片段中的问题。

您可能弄错了,或者您将n定义为要处理的元素数的平方根


阵列展平问题的所有合理解决方案都是O(n),其中n取决于元素的总数(因为,本质上,您需要扫描所有元素,每个元素只扫描一次)。展平数组不是一个算法问题,只是将其放入一个“优雅”的片段中的问题。

它们看起来像O(n),其中n是元素数。我看不出你怎么会比这更好。你指的是数组的n维吗?但如果n是元素的个数,它被认为是O(n),那么你链接的JavaScript问题中“亚当”的答案是线性的,而不是二次的@VinceEmigh当在线性时间内做这件事很琐碎时是不合理的:)@PeterLawrey好吧,使用某种数组连接函数的版本实际上不是线性的,但是如果忽略动态大小数组的成本,通过构建单个累加器数组来做这件事是线性的。它们看起来像O(n)其中n是元素数。我看不出你怎么会比这更好。你指的是数组的n维吗?但如果n是元素的个数,它被认为是O(n),那么你链接的JavaScript问题中“亚当”的答案是线性的,而不是二次的@VinceEmigh当在线性时间内做这件事很琐碎时是不合理的:)@PeterLawrey好吧,使用某种数组连接函数的版本实际上不是线性的,但是如果忽略动态大小数组的成本,通过构建单个累加器数组来做这件事是线性的。我明白了。如果我错了,请纠正我,但可以安全地说它是伪多项式吗?@KarthikVasishta big-O始终是多项式的最高阶。谢谢@PeterLawrey“你需要扫描它们所有,每个只扫描一次”。对于Java来说,情况并非如此。因为Java数组的大小是固定的,所以在开始构建它之前,必须预先扫描数组以找到结果的元素总数。不过仍然是O(n)。@Andreas:我很欣赏你的挑剔:-)但是如果我们在这个层次上解释事情,问题就不是真的了——Javascript中没有“数组”(除非你计算类型化数组API,它不是ECMA的一部分)——因此,仅仅向Javascript“数组”添加n个元素的成本可能会让我们绕过NlogN在我的回答中,我假设Javascript“数组”的等价物是Java的LinkedList:-)我明白了。如果我错了,请纠正我,但可以安全地说它是伪多项式吗?@KarthikVasishta big-O始终是多项式的最高阶。谢谢@PeterLawrey“你需要扫描它们所有,每个只扫描一次”。对于Java来说,情况并非如此。因为Java数组的大小是固定的,所以在开始构建它之前,必须预先扫描数组以找到结果的元素总数。不过仍然是O(n)。@Andreas:我很欣赏你的挑剔:-)但是如果我们在这个层次上解释事情,问题就不是真的了——Javascript中没有“数组”(除非你计算类型化数组API,它不是ECMA的一部分)——因此,仅仅向Javascript“数组”添加n个元素的成本可能会让我们绕过NlogN在我的回答中,我假设Javascript“数组”的等价物是Java的LinkedList:-)