题目
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push以及pop的时间复杂度都是O(1)。
分析
如果在定义的数据结构中,仅仅通过添加一个全局变量来保存最小元素,当最小元素出栈时,则得不到下一个最小元素。
思路:通过一个辅助栈来保存每次应该存放的最小元素,当前最小元素是辅助栈的栈顶元素。当数据栈进行出栈操作时,辅助栈也跟着进行出栈操作。如果入栈的元素大于辅助栈的栈顶元素,则重复将原辅助栈的栈顶元素进行入栈。
实现
|
|
定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数。在该栈中,调用min、push以及pop的时间复杂度都是O(1)。
如果在定义的数据结构中,仅仅通过添加一个全局变量来保存最小元素,当最小元素出栈时,则得不到下一个最小元素。
思路:通过一个辅助栈来保存每次应该存放的最小元素,当前最小元素是辅助栈的栈顶元素。当数据栈进行出栈操作时,辅助栈也跟着进行出栈操作。如果入栈的元素大于辅助栈的栈顶元素,则重复将原辅助栈的栈顶元素进行入栈。
|
|