序列元素IT面试题——判断合法出栈序列
本文純屬個(gè)人見解,是對(duì)前面學(xué)習(xí)的總結(jié),如有描述不正確的地方還請(qǐng)高手指正~
????在技巧筆試口試上,我們常常會(huì)碰到這樣一類題型,如給你一個(gè)入棧序列,然后再讓你判斷幾個(gè)序列是否有可能為它的出棧序列,如:
????入棧序列為 1 2 3 4 5,則 1 2 3 4 5可能為它的出棧序列,而 5 4 1 2 3弗成能為它的出棧序列。
????對(duì)于n比較小的情況,我們往往可以通過手動(dòng)模擬的方法來判斷,對(duì)于n比較大的時(shí)候,這種方法就顯得效率不佳了。
????下面分析一種通用的方法判斷正當(dāng)出棧序列,時(shí)間復(fù)雜度為O(n)。為了敘說便利,我們不妨設(shè)入棧序列為 1 2 3.......n,并且每一個(gè)元素各不相等。
????事實(shí)上,一個(gè)出棧序列固定的話,那么沒個(gè)數(shù)的出棧順序和時(shí)間都是固定的,則我們可以模擬棧的入棧出棧過程,來判斷是否一個(gè)正當(dāng)?shù)某鰲P蛄小?/span>
????我們首先設(shè)po為目前為止入棧的元素中最大的數(shù),初始化為0,若下一個(gè)出棧元素要大于po的話(設(shè)為x),說明我必須將[po+1,x]中的全部書都入棧,再將x彈出便可(這時(shí)還應(yīng)把po賦值為x)。否則說明下一個(gè)出棧的元素已經(jīng)在棧中,并且肯定是棧頂元素,若棧頂元素與下一個(gè)出棧元素不相等的話,我們可以判斷這不是一個(gè)正當(dāng)出棧序列,否則,若全部的出棧元素都不引起沖突,則說明這是一個(gè)正當(dāng)序列。這里再說一下時(shí)間復(fù)雜度,因?yàn)槲覀冎挥性谙乱粋€(gè)出棧元素大于po時(shí),才將元素壓入棧中,并且我們每一次判斷一個(gè)出棧元素是否發(fā)生沖突時(shí),都會(huì)將棧頂元素彈出,所以每一個(gè)元素都入棧一次,出棧一次,所以時(shí)間復(fù)雜度為O(n)。
每日一道理燈,帶有一種明亮的光,每當(dāng)深夜來臨,是它陪伴著你,如此默默無聞。它是平凡的,外表華麗與否,那都是一樣的,珍珠點(diǎn)綴,水晶加飾的燈它只能用以裝飾,來滿足人們的虛榮心,比起這,普普通通的日光燈是幸運(yùn)的,因?yàn)樗彰鞯谋拘詻]有改變,如同生活中的一部分人平平凡凡卻實(shí)實(shí)在在。
????算法的具體實(shí)現(xiàn)請(qǐng)看代碼。
????
????代碼如下:
????
文章結(jié)束給大家分享下程序員的一些笑話語錄: 3G普不普及現(xiàn)在已經(jīng)不是看終端了,而是看應(yīng)用,有好的,便宜實(shí)用的應(yīng)用,花1000多買個(gè)能用的智能手機(jī)應(yīng)該不是什么難事。反過來說,你200元拿一個(gè)智能手機(jī),沒有好的應(yīng)用,看個(gè)電影要幾十元,也是沒人用3G。
轉(zhuǎn)載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/12/3074810.html
總結(jié)
以上是生活随笔為你收集整理的序列元素IT面试题——判断合法出栈序列的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于for of循环的用法和使用
- 下一篇: UILabel 详解