zoukankan      html  css  js  c++  java
  • CCI_Q3.2

    本文参考该作者文章当作编程笔记:
    
    作者:Hawstein
    出处:http://hawstein.com/posts/ctci-solutions-contents.html

    Q:

    实现一个栈,除了push和pop操作,还要实现min函数以返回栈中的最小值。 push,pop和min函数的时间复杂度都为O(1)。

    思路:

    额外建立一个保存栈中目前最小值的数组gpStacMin[],如果入栈的数据小于等于gpStacMin中的栈顶数据,同时入栈。弹出时候,只要弹出的栈顶元素和gpStacMin中的栈顶数据相等,同时弹出。

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 #define N 10
     4 int *gpStac,*gpStacMin;
     5 int gCoutStac=-1,gCoutStacMin=-1;
     6 void initStack()
     7 {
     8     gpStac=(int *)malloc(sizeof(int)*N);
     9     gpStacMin=(int *)malloc(sizeof(int)*N);
    10 }
    11 void stackPush(int num)
    12 {
    13     gpStac[++gCoutStac]=num;
    14     if(gCoutStacMin==-1)
    15         gpStacMin[++gCoutStacMin]=num;
    16     else if(num<=gpStacMin[gCoutStacMin])
    17             gpStacMin[++gCoutStacMin]=num;
    18 }
    19 int stackPop()
    20 {
    21     if(gpStac[gCoutStac]==gpStacMin[gCoutStacMin])
    22         --gCoutStacMin;
    23     return gpStac[gCoutStac--];
    24 }
    25 int stackMin()
    26 {
    27     return gpStacMin[gCoutStacMin];
    28 }
    29 int main()
    30 {
    31     initStack();
    32     int i;
    33     stackPush(3);
    34     stackPush(2);
    35     stackPush(1);
    36     stackPush(4);
    37     stackPush(2);
    38     stackPush(1);
    39     stackPush(3);
    40     for(i=0;i<N-3;i++)
    41     {
    42         printf("%d	",stackMin());
    43         stackPop();
    44     }
    45     free(gpStac);
    46     free(gpStacMin);
    47     return 0;
    48 }
  • 相关阅读:
    感觉每天打开自己的博客园, 想编程的心情就多了起来~~~
    算法图解相关代码整理
    github cli
    What's WebFlux ? And how to use it ? 一股有咖喱味的WebFlux简介
    style
    gradle 1
    gradle打包可运行jar
    外面下着雨
    天晴朗 看花儿多多开放
    Full Stack Reactive with React and Spring WebFlux
  • 原文地址:https://www.cnblogs.com/jhooon/p/3593187.html
Copyright © 2011-2022 走看看