定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
思路: 这里利用了空间换时间的想法,利用一个栈存正常的数据,利用另外一个栈存储此时栈中对应的最小元素。
- #define SIZE 100
- int stack[SIZE];
- int minvalue_stack[SIZE];
- int top = 0;
- int min = 0;
- void push(int key)
- {
- if(top == 0)
- min = key;
- else
- min = min < key ? min : key;
- stack[top] = key;
- minvalue_stack[top++] = min;
- }
- int pop()
- {
- return stack[--top];
- }
- int get_min()
- {
- return minvalue_stack[top - 1];
- }
阅读(1209) | 评论(0) | 转发(0) |