zoukankan      html  css  js  c++  java
  • leetcode-剑指30-OK

    // language: c
    // 剑指30,已经通过,待发,目前博客园发文章的系统出问题了
    // https://leetcode-cn.com/problems/bao-han-minhan-shu-de-zhan-lcof/
    
    // 结点的结构体定义,每个节点记录值与当前最小值
    typedef struct Node{
        int val;
        struct Node *next;
        int min;
    } Node;
    
    
    typedef struct {
        struct Node *top;
        int size;
    } MinStack;
    
    
    /** initialize your data structure here. */
    
    MinStack* minStackCreate() {
        MinStack *A = (MinStack *)malloc(sizeof(MinStack));
        A->top = NULL;
        A->size = 0;
        return A;
    }
    
    void minStackPush(MinStack* obj, int x) {
        Node *newnode=(Node*)malloc(sizeof(Node));
        newnode->val = x;
        newnode->next = obj->top;
        if(obj->size == 0)
            newnode->min =x;
        else if(obj->top->min < x)
            newnode->min = obj->top->min;
        else
            newnode->min =x;
        obj->top = newnode;
        obj->size++;
    }
    
    
    void minStackPop(MinStack* obj) {
        if(obj == NULL)
            return;
        if(obj->top == NULL)
            return;
        Node *willbepoped = obj->top;
        obj->top = obj->top->next;
        free(willbepoped);
        obj->size--;
    }
    
    
    int minStackTop(MinStack* obj) {
        // if(obj == NULL)
        //     return 1000;
        // if(obj->top == NULL)
        //     return 1000;
        return obj->top->val;
    }
    
    int minStackMin(MinStack* obj) {
        // if(obj == NULL)
        //     return 1000;
        // if(obj->top == NULL)
        //     return 1000;
        return obj->top->min;
    }
    
    void minStackFree(MinStack* obj) {
        free(obj);
    }
    
    /**
     * Your MinStack struct will be instantiated and called as such:
     * MinStack* obj = minStackCreate();
     * minStackPush(obj, x);
     
     * minStackPop(obj);
     
     * int param_3 = minStackTop(obj);
     
     * int param_4 = minStackMin(obj);
     
     * minStackFree(obj);
    */
    
  • 相关阅读:
    速达开发小组面试题分享下
    NC V6 nchome文件目录及其作用介绍
    GIL 线程池 进程池 同步 异步 阻塞 非阻塞
    线程
    守护进程进程安全
    并发
    22个所见即所得在线 Web 编辑器
    asp.net操纵Oracle存储过程
    JQuery 中each的使用方法
    JQuery实现简单的服务器轮询效果
  • 原文地址:https://www.cnblogs.com/gallien/p/14333464.html
Copyright © 2011-2022 走看看