0

我一直在尝试反转一个数组,首先是使用 push 并创建一个新数组,然后是使用解构和改变原始数组。

我想知道两者中哪一个跑得更快,为什么?

4

2 回答 2

0

假设您的意思是 push helper 方法通过迭代给定数组来创建一个新数组。使用此方法,您必须遍历整个数组才能反转它。时间复杂度为 O(n)。反转一个数组也需要 O(n) 时间,即使它只需要遍历数组的一半。这是因为 O(n/2) 可以简化为 O(n)。因此,时间复杂度是相同的,尽管严格来说,原地反转需要更少的时间。

于 2021-01-11T23:12:49.157 回答
0

假设您的代码已优化:

  • 第二个选项具有更好的空间复杂度(1: O(n^2), 2: O(n+1))。
  • 第二个选项具有更好的时间复杂度(1: O(n), 2: O(n/2))。

另请注意,也可以使用内置Array.prototype.reverse()方法。

于 2021-01-11T23:23:01.267 回答