题解 | #包含min函数的栈#

包含min函数的栈

http://www.nowcoder.com/practice/4c776177d2c04c2494f2555c9fcc1e49

C语言实现包含min函数的栈操作

  1. 思路:简单的栈很容易实现,重点是如何维护min最小值,最简单的想法,每次计算栈元素最小值存放到一个地方,显然时间复杂度成本过高。使用额外的栈来实现,比如说我依次入栈 5 7 8 6 3 2 4,那么设置记录最小值的栈存放 5 3 2。每次入栈时和最小值栈顶比较,判断是否需要记录。出栈同样比较是否需要弹出。
  2. 重点:双栈实现 辅助栈只记录降序元素
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param value int整型 
 * @return 无
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
//
static int stack[300],min_s[300];
static int s_top=0,m_top=0;
void push(int value ) {
    // write code here
    //第一次入栈 该值作为最小值
    if(m_top==0){
        min_s[m_top++]=value;
    }
    else{
        //小于之前的值 入最小维护栈
        if(value<=min_s[m_top-1]){
            min_s[m_top++]=value;
        }
    }   
    stack[s_top++]=value;
}

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param 无 
 * @return 无
 */
void pop() {
    // write code here
    if(stack[s_top-1]==min_s[m_top-1])
    {
        m_top--;
    }
    s_top--;
    
}

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param 无 
 * @return int整型
 */
int top() {
    // write code here
    return stack[s_top-1];
    
}

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param 无 
 * @return int整型
 */
int min() {
    // write code here
    return min_s[m_top-1];
    
}
全部评论

相关推荐

12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
等闲_:感觉有好多地方会被问穿,mysql存储向量这个方案问题应该很大的,如果深问的的话,为什么不用es,不用pg,不用mivus,分块策略是怎么做的,向量化是怎么向量化的,稠密向量还是稀疏向量,再深问余弦相似度,HSWM算法,Bm25算法,为什么不用混合检索或者Rank重排序优化?其他的项目不停机分库分表咋实现的,切库过程中数据有diff的话有没有补偿策略?既然有了分库分表了有没有碰到业务上不好优化的慢sql,让这个sql读从库?而且点评的话,最好自己压测过,要不这个数据也不好解释。现在就27的情况来看,很多同学已经有了中大厂实习,这个节点也会偏向这些有大厂实习的92同学,而且hc也不多,所以坚持海投吧
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务