• <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

            久久精品国产欧美日韩| 人妻少妇久久中文字幕| 亚洲国产综合久久天堂| 精品人妻伦一二三区久久| 日本精品久久久中文字幕| 久久青草国产手机看片福利盒子| 熟妇人妻久久中文字幕| 久久精品视频免费| 一本色道久久88加勒比—综合| 99久久精品免费国产大片| 国产精品99精品久久免费| 久久精品国产亚洲综合色| 国产V综合V亚洲欧美久久| 99久久国语露脸精品国产| 久久久久久亚洲精品不卡| 国产成人无码精品久久久久免费| 麻豆精品久久久久久久99蜜桃 | 欧美精品久久久久久久自慰| 亚洲色欲久久久久综合网| 久久中文字幕人妻丝袜| 久久一日本道色综合久久| 99久久中文字幕| 欧美久久久久久午夜精品| 国产福利电影一区二区三区,免费久久久久久久精 | 久久成人国产精品二三区| 97久久精品人人做人人爽| 欧美性大战久久久久久| 亚洲欧洲日产国码无码久久99| 国产婷婷成人久久Av免费高清| 四虎国产精品免费久久5151| 伊色综合久久之综合久久| 久久99精品综合国产首页| 欧美一级久久久久久久大| 一本色道久久综合亚洲精品| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 国内精品久久久久影院亚洲| 色婷婷久久综合中文久久蜜桃av| 狠狠综合久久综合中文88| 麻豆成人久久精品二区三区免费| 大美女久久久久久j久久| 欧美精品国产综合久久|