这道题有两种实现方式
方法一:用两个栈来实现
两个栈实现的主要思路是,一个栈存放数据,一个栈存放最小值。
压栈操作:
(1)我们先向S1压栈一个数据
(2)再向S1压入第二个数据,如果此时栈S2为空,并且把需要压栈的元素data和S2的栈顶元素进行比较,如果此时需要压栈的元素小于等于S2栈顶元素,把元素也压入栈2,否则不用管
出栈操作:
判断S1栈顶元素与S2栈顶元素是否相等,相等都出栈,否则出S1
选取最小值:
S2不为空,则直接选取S2的栈顶元素
示意图:
这道题有两种实现方式
方法一:用两个栈来实现
两个栈实现的主要思路是,一个栈存放数据,一个栈存放最小值。
压栈操作:
(1)我们先向S1压栈一个数据
(2)再向S1压入第二个数据,如果此时栈S2为空,并且把需要压栈的元素data和S2的栈顶元素进行比较,如果此时需要压栈的元素小于等于S2栈顶元素,把元素也压入栈2,否则不用管
出栈操作:
判断S1栈顶元素与S2栈顶元素是否相等,相等都出栈,否则出S1
选取最小值:
S2不为空,则直接选取S2的栈顶元素
示意图: