1 java reverse linked-list time-complexity data-structures
因此,我需要反转O(N)时间/空间中的链表。
这个实现是我仅使用Java标准库中的LinkedList类实现的(它不能让我访问节点本身)。
您要求的“更好的方式”可以利用Java LinkedList
类具有方法的事实
addFirst
addLast
removeFirst
removeLast
这些都是O(1)。
您可以通过几种方式获得O(n)的时空行为。一种这样的方式是:
LinkedList<E> b = new LinkedList<E>();
while (!a.isEmpty()) {
b.addFirst(a.removeFirst());
}
a.addAll(b);
Run Code Online (Sandbox Code Playgroud)
这样就可以进行“就地”反转(也就是说,变量a
始终都引用完全相同的对象)。这等效于使用堆栈作为临时存储(b
即“堆栈”)。
尽管进行了丑陋的复制,但这是O(n)时间和O(n)空间。
归档时间: |
|
查看次数: |
346 次 |
最近记录: |