• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

MarkGrid

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

随笔分类 -  提问与解答

如何保证栈的pop/push/get_min的效率同时满足是O(1)?
摘要:注:get_min为最小值,是动态的,也就是说,每次的pop或push都取的是当前栈内元素的最小值。解决方案:设置两个栈,一个为原始数据栈S1,一个为最小值栈S2。push操作 -- 复杂度为O(1):开始时,push数据D1到S1,同时对比S2中的栈顶元素TD2,只有D1<topdata时才将D1 push到S2;接着push其他数据Dn...pop操作-- 复杂度为O(1):每次pop S1时(假设为TD1),先与S2的TD1比较,只有TD1<=TD2时,将TD2从S2中pop;get_min --复杂度为O(1):直接pop S2的栈顶元素TD2即为S1的当前最小值。当然,这 阅读全文

posted @ 2013-06-19 09:50 MarkGrid 阅读(300) 评论(0) 推荐(0)

 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3