• <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 閱讀(793) 評論(0)  編輯 收藏 引用 所屬分類: Data structure and algorithms

            精品乱码久久久久久久| 日韩久久久久中文字幕人妻| 久久99精品久久久久久齐齐 | 欧美精品乱码99久久蜜桃| 国内精品久久久久久久影视麻豆| 精品国产热久久久福利| 人人狠狠综合久久亚洲| 无遮挡粉嫩小泬久久久久久久| 久久精品无码午夜福利理论片| 久久久久四虎国产精品| 久久午夜无码鲁丝片秋霞| 国产亚洲婷婷香蕉久久精品 | 亚洲国产成人精品久久久国产成人一区二区三区综 | 一级做a爰片久久毛片看看| 国产精品福利一区二区久久| 久久久久99精品成人片| 久久大香香蕉国产| 久久亚洲精品国产精品婷婷| 国产精品日韩深夜福利久久| 欧美噜噜久久久XXX| 久久这里有精品视频| yellow中文字幕久久网| 久久精品无码午夜福利理论片| 亚洲精品国产第一综合99久久| 精品国产一区二区三区久久久狼| 久久人人爽人人爽人人片AV东京热 | 亚洲狠狠婷婷综合久久久久| 狠狠色丁香婷婷久久综合 | 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 777米奇久久最新地址| 久久精品国产99久久久古代| 亚洲精品乱码久久久久久蜜桃| 久久噜噜电影你懂的| 国产成人精品白浆久久69| 精品国产VA久久久久久久冰| 久久久久女人精品毛片| 色婷婷综合久久久久中文 | 精品乱码久久久久久久| 久久精品a亚洲国产v高清不卡| 伊人久久大香线蕉综合Av| 亚洲中文字幕无码久久2017|