反转到新数组 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.
我一直在尝试反转数组,首先是使用 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.