我正在构建一个使用双向链表构建堆栈的程序。我需要以 O(1) 的运行时间翻转堆栈或反转堆栈的顺序。例如:
1 -> 2 -> 3 -> 4
变成
4 -> 3 -> 2 -> 1
我能想到的最快方法是使用 O(N) 作为运行时。由于被要求使用 O(1) 的运行时,所有循环都是不可能的,因为它们都将不可避免地取决于堆栈中的节点数。
有人可以推荐一种合理的方法来解决这个问题吗?
c big-o stack
big-o ×1
c ×1
stack ×1