本文主要是介绍定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本题目来自与牛客网。
解题思路:利用辅助栈来存储现有栈的最小值。在入栈和出栈的时候将现有栈和最小值栈进行比较。
入栈时,若新值比最小值栈的栈顶还小,则将该值同时push到最小值栈;出栈时,若现有栈的栈顶和最小值栈栈顶一致,则同时出栈,否则,仅仅现有栈pop;通过这一操作,最小值栈的栈顶将永远是现有栈元素中的最下值。
class Solution {
public:
stack<int> my_stack, min_stack;void push(int value)
{my_stack.push(value);if (min_stack.size() == 0)min_stack.push(value);if (value < min_stack.top())min_stack.push(value);
}
void pop()
{if (my_stack.top() == min_stack.top()){my_stack.pop();min_stack.pop();}elsemy_stack.pop();
}int top()
{return my_stack.top();
}
int min()
{return min_stack.top();
}
};
这篇关于定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!