反转到新数组 VS 原地反转

Reverse into new array VS reverse in place

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

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

假设您指的是 push 辅助方法通过遍历给定数组来创建新数组。使用此方法,您必须遍历整个数组才能反转它。时间复杂度为 O(n)。就地反转数组也需要 O(n) 时间,即使它只需要遍历数组的一半。这是因为 O(n/2) 可以简化为 O(n)。因此时间复杂度是一样的,虽然严格来说原地倒车花费的时间更少。

假设您的代码已优化:

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

Also note that may use the built-in Array.prototype.reverse() method as well.