• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Zero Lee的專欄

            設計包含min函數的棧

            定義棧的數據結構,要求添加一個min的函數,能夠得到棧的最下元素。
            要求函數min, push, pop的時間復雜度都是O(1)
             1 class stackmin {
             2     int data[N];
             3     int minidx[N];
             4     int top;
             5 public:
             6     stackmin()
             7         : top(-1)
             8     {
             9         ::memset(minidx, -1sizeof(int)*N);
            10         ::memset(data, 0sizeof(int)*N);
            11     }
            12 
            13     bool push(int d)
            14     {
            15         if (top < N-1)
            16             data[++top] = d;
            17         else
            18             return false;
            19         if (top==0)
            20             minidx[top] = 0;
            21         else if (data[minidx[top-1]] > d)
            22             minidx[top] = top;
            23         else
            24             minidx[top] = minidx[top-1];
            25         return true;
            26     }
            27     bool pop(int& d)
            28     {
            29         if (top<0)
            30             return false;
            31         else
            32 
            33             d = data[top];
            34         minidx[top] = -1;
            35         top--;
            36         return true;
            37     }
            38     bool min(int& m)
            39     {
            40         if (top>=0)
            41             m = data[minidx[top]];
            42         else
            43             return false;
            44         return true;
            45     }
            46     void print()
            47     {
            48         for (int i = 0; i <= top; i++)
            49             std::cout << data[i] << " ";
            50         std::cout << "\n";
            51     }
            52 };
            53 

            借助另一個內部的數組,用來存儲每次push元素之后的棧最小值的索引,便可很方便的在O(1)的時間內完成以上三種操作。一種空間換時間的方法。


            posted on 2010-11-26 12:13 Zero Lee 閱讀(801) 評論(0)  編輯 收藏 引用 所屬分類: Data structure and algorithms

            狠狠色综合久久久久尤物| 亚洲精品美女久久久久99| 曰曰摸天天摸人人看久久久| 日本精品久久久中文字幕| 欧美久久天天综合香蕉伊| 久久夜色精品国产噜噜噜亚洲AV| 国产成人精品免费久久久久| 久久久久亚洲AV综合波多野结衣| 婷婷伊人久久大香线蕉AV | 久久久WWW免费人成精品| 久久精品亚洲乱码伦伦中文| 久久66热人妻偷产精品9| 久久人人爽人爽人人爽av| 欧美黑人激情性久久| 怡红院日本一道日本久久| 久久亚洲AV成人无码软件| 国产精品综合久久第一页| 久久精品天天中文字幕人妻| 久久久久亚洲av毛片大| segui久久国产精品| 精品一区二区久久| 久久精品国产亚洲av麻豆色欲 | 国产69精品久久久久APP下载| 久久国产精品-久久精品| 精品久久久久久亚洲精品| 亚洲乱码精品久久久久..| 久久免费看黄a级毛片| 国产精品99久久久精品无码| 久久婷婷五月综合97色直播| 久久天天躁狠狠躁夜夜2020老熟妇| 色成年激情久久综合| 国产高清国内精品福利99久久| 国产精品久久久久久一区二区三区| 韩国免费A级毛片久久| 国内精品久久国产大陆| 色综合色天天久久婷婷基地| 欧美精品一区二区精品久久 | 亚洲国产成人久久综合野外| 久久青青草视频| 久久精品九九亚洲精品| www.久久99|