本文共 522 字,大约阅读时间需要 1 分钟。
设计一个支持push、pop、top操作,并能在常数时间内检索到最小元素的栈。以下是具体的解决方案:
为了实现上述功能,我们采用链栈(双向链表)结构,通过每个栈节点存储其值以及当前栈中最小值的一种巧妙方法。
栈的每个节点包含以下信息:
data
:当前节点的值。min_val
:当前节点及其后继节点中的最小值。next
:指向下一个节点的指针。push(x):
data
字段为x,min_val
字段为x。min_val
字段为x。min_val
字段为当前栈顶的min_val
和x中的较小值。next
指向当前栈顶节点。min_val
。pop():
next
节点。min_val
为新的栈顶节点的min_val
。top():
data
值。getMin():
min_val
值。栈释放:
这种设计使得所有操作的时间复杂度均为O(1),包括快速检索栈中的最小值。
转载地址:http://kygfk.baihongyu.com/