使用平台:vs2013
一个问题肯定不止一种解法,我下面给的是利用两个栈来求去栈中最小值,当然一个栈也可以求取问题。一个栈的求解这里就只给出思路。
一个栈求解:每次push,push两个值,当前要push的值,和最小值,这样就可以实现一个栈求解问题,但是这样做的话每次取栈顶的值或者push时会比较麻烦。所以可以借助pair来存取当前值和最小值。
问题分析:
每次插入时:
1.先判断_min是否为空,为空则插入时_s和_min同时插入
2.如果_min栈顶的值大于等于即将要插入的值,_s和 _min同时插入
每次删除时:
1. 首先要判断,_s是否还有元素,可以删除
2. 当_min的栈顶