Snowdream

I'm awake but my world is half asleep
posts - 403, comments - 310, trackbacks - 0, articles - 7
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

支持O(1)时间push pop min方法的栈

Posted on 2007-10-29 21:30 ZelluX 阅读(619) 评论(2)  编辑  收藏 所属分类: Algorithm

算法课的习题
题目很简单,但是代码很漂亮

[zz]

template <typename T>
class min_stack {
public:
  
void push(const T& v) {
    s.push(make_pair(v, empty()
||v<s.top().second ? v : s.top().second));
  }


  
void pop() { s.pop(); }

  
const T& top() return s.top().first; }

  
const T& min() return s.top().second; }

  
bool empty() return s.empty(); }

private:
  std::stack
<std::pair<T, T> > s;
}
;

评论

# re: 支持O(1)时间push pop min方法的栈  回复  更多评论   

2007-11-17 14:09 by Lee.MaRS
这个pair用得太难看了...

# re: 支持O(1)时间push pop min方法的栈  回复  更多评论   

2007-11-20 00:43 by ZelluX
@Lee.MaRS
囧 为什么老被你bs @,@

只有注册用户登录后才能发表评论。


网站导航: