题目:
成都创新互联公司专注于湛江企业网站建设,成都响应式网站建设,购物商城网站建设。湛江网站建设公司,为湛江等地区提供建站服务。全流程按需网站设计,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务
定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数。
思路一:
通过每次在压入栈顶的元素与当前最小元素相比后,保存一遍最小元素,每次弹出,都弹出两个,这个就能得到栈当前最小元素了
代码:
class Solution { public: void push(int value) { if(s1.size()==0) { s1.push(value); int min=value; s1.push(min); } else { int min=s1.top(); if(value<min) { min=value; } s1.push(value); s1.push(min); } } //弹出两次 void pop() { int min=s1.top(); s1.pop(); int val=s1.top(); s1.pop(); } int top(){ int min=s1.top(); s1.pop(); int val=s1.top(); s1.push(min); return val; } int min() { return s1.top(); } private: stack<int> s1; };
思路二:利用两个栈,一个栈用于压入数据,另一个栈用于压入数据时的最小元素。无论最小元素是不是压栈的元素,都保存到第二个栈中
代码:
class Solution { public: void push(int value) { if(s1.size()==0) { s1.push(value); s2.push(value); } else { s1.push(value); int min=s2.top(); if(min>value) { s2.push(value); } else { s2.push(min); } } } void pop() { if(!s1.empty()) { s1.pop(); s2.pop(); } } int top() { return s1.top(); } int min() { return s2.top(); } private: stack<int> s1,s2; };
本文标题:剑指offer之面试题21:包含min函数的栈
文章URL:https://www.cdcxhl.com/article20/gichjo.html
成都网站建设公司_创新互联,为您提供电子商务、Google、标签优化、手机网站建设、关键词优化、网站排名
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联