• <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的專欄

            設(shè)計(jì)包含min函數(shù)的棧

            定義棧的數(shù)據(jù)結(jié)構(gòu),要求添加一個(gè)min的函數(shù),能夠得到棧的最下元素。
            要求函數(shù)min, push, pop的時(shí)間復(fù)雜度都是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 

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


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

            久久精品国产第一区二区三区| 久久综合狠狠综合久久激情 | 国内精品久久久久久久久电影网| 久久久久久人妻无码| 亚洲日本久久久午夜精品| 久久久久国产成人精品亚洲午夜| 久久精品无码一区二区日韩AV| 久久国产精品免费| 国产精品美女久久久久AV福利| 久久99国产精品99久久| 99久久综合狠狠综合久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产精品久久久久一区二区三区| 久久A级毛片免费观看| 国产精品久久久久久福利漫画 | 久久久无码精品亚洲日韩京东传媒 | 色综合久久久久综合体桃花网| 久久久久亚洲AV无码专区体验| 久久精品aⅴ无码中文字字幕重口| 久久99精品国产自在现线小黄鸭 | 精品综合久久久久久88小说| 久久精品国产99久久丝袜| 久久福利资源国产精品999| 亚洲中文字幕无码久久2017 | 久久精品中文字幕久久| 久久精品国产精品亚洲下载| 国产精品久久新婚兰兰| 国产精品久久永久免费| 国产精品嫩草影院久久| 亚洲中文字幕无码久久综合网| 精品综合久久久久久97超人| 国产午夜电影久久| 日产精品99久久久久久| 精品综合久久久久久88小说| 无码人妻久久一区二区三区免费丨| 精品久久一区二区| 人人妻久久人人澡人人爽人人精品| 久久天天躁狠狠躁夜夜96流白浆| 久久久久无码国产精品不卡| 精品久久8x国产免费观看| 四虎久久影院|