实现一个栈,要求实现Push(压栈),Pop(出栈),Min(返回最小值的操作)的时间复杂度为O(1)
我们知道栈是后进先出的一种数据结构,这种数据结构只允许在栈顶进行插入删除,所以要实现栈这种数据结构最好的结构就是顺序表.当尾插尾删多的时候,链表存在开辟空间和删除空间的时间消耗所以此时顺序表优于链表.结构选好之后就是如何求出栈的元素的最小值了?
思路一:
如果一次可以将同一个数据进行两次压栈
一.要压入的数据比栈顶的数据大
(1).将原来栈顶的元素保存起来再Pop掉
(2).将新元素压栈,再将原来栈顶的元素压栈
二.要压入的数据比栈顶的数据小
直接将该数据两次压栈
如果每次都如此压栈的话到最后栈顶的元素一定是所有数据中最小的元素,而且也不会改变入栈的顺序