Chinaunix首页 | 论坛 | 博客
  • 博客访问: 40794
  • 博文数量: 9
  • 博客积分: 1557
  • 博客等级: 上尉
  • 技术积分: 124
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-06 17:06
文章分类
文章存档

2011年(2)

2010年(7)

我的朋友

分类: C/C++

2011-08-21 20:31:55

定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
 
思路: 这里利用了空间换时间的想法,利用一个栈存正常的数据,利用另外一个栈存储此时栈中对应的最小元素。
  1. #define SIZE 100
  2. int stack[SIZE];
  3. int minvalue_stack[SIZE];
  4. int top = 0;
  5. int min = 0;
  6. void push(int key)
  7. {
  8.     if(top == 0)
  9.         min = key;
  10.     else
  11.         min = min < key ? min : key;
  12.     stack[top] = key;
  13.     minvalue_stack[top++] = min;
  14. }
  15. int pop()
  16. {
  17.     return stack[--top];
  18. }
  19. int get_min()
  20. {
  21.     return minvalue_stack[top - 1];
  22. }
阅读(1154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~