当前位置: 首页 > news >正文

免费招聘网站推荐深圳网站优化最好的方法

免费招聘网站推荐,深圳网站优化最好的方法,长沙网页设计培训机构,wordpress转微信文章目录 Tag题目来源题目解读解题思路方法一#xff1a;辅助栈方法二#xff1a;一个栈方法三#xff1a;栈中存放差值 其他语言python3 写在最后 Tag 【设计类】【栈】 题目来源 155. 最小栈 题目解读 本题是一个设计类的题目#xff0c;设计一个最小栈类 MinStack() … 文章目录 Tag题目来源题目解读解题思路方法一辅助栈方法二一个栈方法三栈中存放差值 其他语言python3 写在最后 Tag 【设计类】【栈】 题目来源 155. 最小栈 题目解读 本题是一个设计类的题目设计一个最小栈类 MinStack() 实现 MinStack()初始化堆栈对象void push(int val)将元素val推入堆栈void pop()删除堆栈顶部的元素int top()获取堆栈顶部的元素int getMin()获取堆栈中的最小元素。 解题思路 方法一辅助栈 维护两个栈一个栈就是常规的栈 stk1另一个栈 stk2 用来存放已经插入栈 stk1 中数字的最小值。 注意入栈和出栈操作时两个栈都要更新。 实现代码 class MinStack {public:MinStack() {min_stk.push(INT_MAX);}void push(int val) {stk.push(val);min_stk.push(std::min(min_stk.top(), val));}void pop() {stk.pop();min_stk.pop();}int top() {return stk.top();}int getMin() {return min_stk.top();}private:std::stackint stk;std::stackint min_stk; };/*** Your MinStack object will be instantiated and called as such:* MinStack* obj new MinStack();* obj-push(val);* obj-pop();* int param_3 obj-top();* int param_4 obj-getMin();*/复杂度分析 时间复杂度 O ( 1 ) O(1) O(1)。 空间复杂度 O ( n ) O(n) O(n) n n n 为 操作次数。 方法二一个栈 可以只使用一个栈来同时保存当前的最小值和 val。 实现代码 class MinStack { private:stackpairint, int stk; public:MinStack() {stk.push(make_pair(INT_MAX, INT_MAX));}void push(int val) {stk.push({min(stk.top().first, val), val});}void pop() {stk.pop();}int top() {return stk.top().second;}int getMin() {return stk.top().first;} };/*** Your MinStack object will be instantiated and called as such:* MinStack* obj new MinStack();* obj-push(val);* obj-pop();* int param_3 obj-top();* int param_4 obj-getMin();*/复杂度分析 时间复杂度 O ( 1 ) O(1) O(1)。 空间复杂度 O ( 1 ) O(1) O(1)。 方法三栈中存放差值 现在我们维护一个变量 minVal表示当前插入的变量的最小值栈中每次入栈的是 val 与 minVal 的差值 differ。现在进行具体分析 push(int val)如果此时栈为空我们更新 minVal val向栈中插入 0如果此时栈非空首先向栈中插入 diff根据 diff 的值来更新 minVal 如果 diff 0说明插入的 val 大于当前的 minVal则 minVal 不需要更新否则表明插入的 val 小于或者等于当前的 minVal则更新 minVal val。 pop()我们需要根据 diff 来更新弹出栈顶元素后的 minVal具体地 先弹出栈顶元素 diff并 pop如果 diff 0说明我们当时插入的 val 大于当时的 minVal则 minVal 是不需要更新的否则说明当时插入的 val 小于或者等于 minVal当时的 minVal 是插入的 val需要将 minVal 还原回去即当时插入 val 更新 minVal 的过程如下还原回去得到 minVal minVal diff。 d i f f v a l − m i n V a l ; m i n V a l v a l ; diff val - minVal; minVal val; diffval−minVal;minValval; top()如果 diff 0表示 minVal 就是最小栈的栈顶元素否则 minVal diff 才是最小栈的栈顶元素。getMin()直接返回 minVal 即可。 实现代码 class MinStack { private:stacklong long stk;long long minVal, diff; public:MinStack() {}void push(int val) {if (stk.empty()) {stk.push(0);minVal val;}else {diff val - minVal;stk.push(diff);minVal diff 0 ? minVal : val;}}void pop() {diff stk.top();stk.pop();if (diff 0) {minVal minVal - diff;}}int top() {return stk.top() 0 ? minVal : minVal stk.top();}int getMin() {return minVal;} };/*** Your MinStack object will be instantiated and called as such:* MinStack* obj new MinStack();* obj-push(val);* obj-pop();* int param_3 obj-top();* int param_4 obj-getMin();*/复杂度分析 时间复杂度 O ( 1 ) O(1) O(1)。 空间复杂度 O ( 1 ) O(1) O(1)。 其他语言 python3 以下只给出方法三的 python3 代码该方法比较巧妙值得好好研究。 class MinStack:def __init__(self):initialize your data structure here.self.stack []def push(self, x: int) - None:if not self.stack:self.stack.append(0)self.min_value xelse:diff x-self.min_valueself.stack.append(diff)self.min_value self.min_value if diff 0 else xdef pop(self) - None:if self.stack:diff self.stack.pop()if diff 0:self.min_value self.min_value - diffdef top(self) - int:return self.min_value if self.stack[-1] 0 else self.stack[-1] self.min_valuedef getMin(self) - int:return self.min_value if self.stack else -1写在最后 如果文章内容有任何错误或者您对文章有任何疑问欢迎私信博主或者在评论区指出 。 如果大家有更优的时间、空间复杂度方法欢迎评论区交流。 最后感谢您的阅读如果感到有所收获的话可以给博主点一个 哦。
http://www.dnsts.com.cn/news/78884.html

相关文章:

  • 网站建设招标技术要求公司网页设计思路
  • 惠州 网站建设做网站的要到处跑吗
  • 新网站没有死链接怎么做网站推广文章 优帮云
  • 广东网站建设专业公司排名wordpress 主页文件
  • 网站后台更新了 前台不现实小果seo实战培训课程
  • 做网站的图片房产it设备网站如何做seo
  • 帮人管理网站做淘宝客广州优化防控措施
  • 网站如何加速WordPress 云解析视频
  • 自己可以做网站网址导航网站
  • 最新的电商平台网站优化外包服务
  • 用git 做网站做网站配什么绿色好看些
  • 模块网站和定制网站区别做一个答疑网站
  • 南宁在哪里推广网站张家港网站设计制作早晨设计
  • 遨游网站建设如何帮人做网站赚钱
  • 佛山市外贸网站建设微信公众平台小程序在哪
  • 宁波网站seo诊断工具上海人力资源网官方网
  • 搜索网站 模板各大网站流量排名
  • 做网站运营需要会什么wordpress 中文教程
  • 医疗做网站常用网站字体
  • 怎么做健康咨询网站个人网站域名名字
  • 网站建设咨询话术怎么获取wordpress的权限
  • 高端品牌网站定制设计企业网页设计案例
  • 一级a做爰片免费网站孕交视频学生个人主页设计图片
  • 广东地区建网站的公司公司网站后台上怎么上传图片呢
  • 建设银行个人网站个人客户网站建设的可行性分析报告
  • 百度做网站骗人到哪里去投诉脑白金网络营销方式
  • 做网站用的代码成都那家做网站好
  • wordpress设置主从库苏州排名搜索优化
  • 北京市西城区住房建设局官方网站中山移动网站建设多少钱
  • 邯郸做网站推广的地方网站建立多少钱