题解 | #包含min函数的栈#

包含min函数的栈

https://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

2022.0807算法第16题包含min函数的栈
算法要求min的复杂度为常数,刚开始想到了用一个变量存储min,存储时更新min没有问题,但是在pop删除操作时就比较麻烦了。
如果栈顶元素为最小值,删除之后的最小值就不知道了。
因此需要其他的结构存储最小值,可以使用一个辅助栈进行存储。
辅助栈里存储着当前栈元素的最小值,push操作一样,pop时只需要同样取出辅助栈的元素即可。
也就是以空间换时间的做法。
实现push函数:
当栈为空或者当前元素小于最小值时,更新辅助栈的值
否则直接将辅助栈的栈顶元素重复加入。
void push(int value) {
    if(sta.empty()){
        min_num.push(value);          
    }
    else{
        if(value<min_num.top())
            min_num.push(value);
        else
            min_num.push(min_num.top());
    }
    sta.push(value);           
}
pop函数、top函数和min函数比较简单,之间对两个栈进行操作就行;
void pop() {
    sta.pop();
    min_num.pop();
}
int top() {
    return sta.top();
}
int min() {
    return min_num.top();
}



#算法题#
全部评论

相关推荐

07-09 19:25
门头沟学院 Java
这是要把每一个投校招的都开盒吗?
26届之耻将大局逆转:裁人的时候一次性追回餐费
点赞 评论 收藏
分享
能干的三文鱼刷了10...:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务