(微软面试100题)设计包含min 函数的栈
来源:互联网 发布:不会算法程序员工资 编辑:程序博客网 时间:2024/06/05 18:28
问题描述
设计包含min 函数的栈。
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。
主要思路:
使用一个Min辅助栈实现
#include "stdafx.h"#include <stdio.h>#include <stdlib.h>/*设计包含min 函数的栈。定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数min、push 以及pop 的时间复杂度都是O(1)。*/#define STACK_SIZE 64#define MIN_STACK_SIZE 64int top = -1;int min_top = -1;int stack[STACK_SIZE];int min_stack[STACK_SIZE];int push(int val){ if (++top >= STACK_SIZE){ printf("Stack overflow!\n"); return -1; } stack[top] = val; if (min_top == -1){ min_stack[++min_top] = val; } else{ if (val < min_stack[min_top] && min_top < MIN_STACK_SIZE){ min_stack[++min_top] = val; } } return 0;}int pop(){ int val; if (top == -1){ printf("Stack is empty!\n"); return -1; } val = stack[top--]; if (val < min_stack[min_top]){ min_top--; } return 0;}int min(){ return min_stack[min_top];}int main(){ push(13); printf("Min is %d.\n", min()); push(10); printf("Min is %d.\n", min()); push(5); printf("Min is %d.\n", min()); push(3); printf("Min is %d.\n", min()); push(12); printf("Min is %d.\n", min()); push(2); printf("Min is %d.\n", min()); pop(); printf("Min is %d.\n", min()); pop(); printf("Min is %d.\n", min()); pop(); printf("Min is %d.\n", min());}
- [微软面试100题] 设计包含min函数的栈
- (微软面试100题)设计包含min 函数的栈
- 微软等面试100题第二题:设计包含min函数的栈
- 微软面试100题之二 设计包含min函数的栈。
- 【微软面试100题】2.设计包含min函数的栈
- 微软等面试100题筛选答案-2-设计包含min函数的栈
- 微软面试100题系列-设计包含 min 函数的栈
- 微软面试100题系列---设计包含min函数的栈
- (微软100题)2.设计包含min 函数的栈。
- 【微软100题】002设计包含 min 函数的栈
- 面试100题:2.设计包含min函数的栈
- 面试100题:2.设计包含min函数的栈
- 包含min函数的栈 【微软面试100题 第二题】
- 【从零单排之微软面试100题系列】02之包含 min 函数的栈
- 微软面试(2/100)--设计包含函数的栈
- 微软100题-第2题设计包含min函数的栈
- 【微软100面试题实现】第02题:设计包含min函数的栈
- 微软100题系列之-----设计包含min函数的栈
- 头文件string与string.h的区别
- 指定IP的MAC 代码如下
- oracle中的db_name,servcie_name,instance_name,oracle_sid,global_dbname
- FreeRapid v0.9
- eval命令使用
- (微软面试100题)设计包含min 函数的栈
- Ubuntu12.04+OpenERP7.0安装笔记
- AMPS:日志模块源码解读
- PeekThrough
- 关于使用onfocus=”this.blur()”的利与弊
- windows命令
- myeclipse Java compiler level does not match the version of the installed Java...
- 将16进制形式的以空格分隔的字符串输出到char[]中
- conn=OracleJdbcUtil.getConnection();