序列元素IT面試題——判斷合法出棧序列

本文純屬個人見解,是對前面學習的總結,如有描述不正確的地方還請高手指正~

????在技巧筆試口試上,我們常常會碰到這樣一類題型,如給你一個入棧序列,然后再讓你判斷幾個序列是否有可能為它的出棧序列,如:

????入棧序列為 1 2 3 4 5,則 1 2 3 4 5可能為它的出棧序列,而 5 4 1 2 3弗成能為它的出棧序列

????對于n比較小的情況,我們往往可以通過手動模擬的方法來判斷,對于n比較大的時候,這種方法就顯得效率不佳了。

????下面分析一種通用的方法判斷正當出棧序列,時間復雜度為O(n)。為了敘說便利,我們不妨設入棧序列為 1 2 3.......n,并且每一個元素各不相等。

????事實上,一個出棧序列固定的話,那么沒個數的出棧順序和時間都是固定的,則我們可以模擬棧的入棧出棧過程,來判斷是否一個正當的出棧序列。

????我們首先設po為目前為止入棧的元素中最大的數,初始化為0,若下一個出棧元素要大于po的話(設為x),說明我必須將[po+1,x]中的全部書都入棧,再將x彈出便可(這時還應把po賦值為x)。否則說明下一個出棧的元素已經在棧中,并且肯定是棧頂元素,若棧頂元素與下一個出棧元素不相等的話,我們可以判斷這不是一個正當出棧序列,否則,若全部的出棧元素都不引起沖突,則說明這是一個正當序列。這里再說一下時間復雜度,因為我們只有在下一個出棧元素大于po時,才將元素壓入棧中,并且我們每一次判斷一個出棧元素是否發生沖突時,都會將棧頂元素彈出,所以每一個元素都入棧一次,出棧一次,所以時間復雜度為O(n)。

每日一道理
燈,帶有一種明亮的光,每當深夜來臨,是它陪伴著你,如此默默無聞。它是平凡的,外表華麗與否,那都是一樣的,珍珠點綴,水晶加飾的燈它只能用以裝飾,來滿足人們的虛榮心,比起這,普普通通的日光燈是幸運的,因為它照明的本性沒有改變,如同生活中的一部分人平平凡凡卻實實在在。

????算法的具體實現請看代碼。

????

????代碼如下:

#include <stdio.h>
#define maxn 1005
int stack[maxn],top;
int out[maxn];
int check(int n)
{int po=0;for(int i=1;i<=n;i++){for(int j=po+1;j<=out[i];j++){po=j;stack[top++]=j;}if(stack[--top]!=out[i])return 0;}return 1;
}
int main()
{int n;scanf("%d",&n);//假設入棧序列為1 2。。。。nfor(int i=1;i<=n;i++){scanf("%d",&out[i]);}if(check(n))printf("Yes\n");elseprintf("No\n");return 0;
}

????

文章結束給大家分享下程序員的一些笑話語錄: 3G普不普及現在已經不是看終端了,而是看應用,有好的,便宜實用的應用,花1000多買個能用的智能手機應該不是什么難事。反過來說,你200元拿一個智能手機,沒有好的應用,看個電影要幾十元,也是沒人用3G。

轉載于:https://www.cnblogs.com/xinyuyuanm/archive/2013/05/12/3074810.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259761.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259761.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259761.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

scikit-learn點滴

scikit-learn點滴 scikit-learn是非常漂亮的一個機器學習庫,在某些時候,使用這些庫能夠大量的節省你的時間,至少,我們用Python,應該是很難寫出速度快如斯的代碼的. scikit-learn官方出了一些文檔,但是個人覺得,它的文檔很多東西都沒有講清楚,它說算法原理的時候,只是描述一下,除…

background image

http://www.ajaxblender.com/bgstretcher-2-jquery-stretch-background-plugin-updated.html http://blog.dvxj.com/pandola/jQuery_bgStretcher.html 轉載于:https://www.cnblogs.com/eebb/p/4077231.html

怎樣搭建Android開發平臺(轉)

Android是基于Linux內核的軟件平臺和操作系統&#xff0c;是Google在2007年11月5日公布的手機系統平臺&#xff0c;早期由Google開發&#xff0c;后由開放手機聯盟&#xff08;Open Handset Alliance&#xff09;開發。 它采用了軟件堆層&#xff08;software stack&#xff0c…

mvn deploy 推送到私有倉庫,注意當前日期

由于更改了本機系統時間到過去的一個時間&#xff0c;導致mvn deploy推送到私有倉庫后&#xff0c;該更新的jar包時間戳比較舊&#xff0c;客戶端不能更新得到新的jar包。轉載于:https://www.cnblogs.com/silva/p/6264458.html

我的世界1.7.10java32位_我的世界1.7.10中文版

不知道怎么下載&#xff1f;點我游戲介紹《我的世界1.7.10》中整個世界由各種方塊構成&#xff0c;玩家可以破壞它們&#xff0c;也可以用自己的方塊隨意建造東西。為了在游戲里生存和發展&#xff0c;玩家需要通過伐木、挖礦、捕獵等方式獲取資源&#xff0c;并通過合成系統打…

python程序在函數內執行得更快

http://www.cnblogs.com/nepaul/archive/2012/07/15/2592179.html 為什么Python程序在函數內執行得更快&#xff1f;&#xff08;來源StackOverflow&#xff09; 考慮下面的代碼&#xff0c;一個在函數體內&#xff0c;一個是全局的代碼。 函數內的代碼執行效率為 1.8s 1234def…

USER_EXIT

1、md04的用戶出口 M61X0002 2、me21n/me22n的用戶出口 MM06E005 MBCF0002 3、migo 的用戶出口&#xff1a; MBCF0009 MBCF0002-> EXIT_SAPMM07M_001 4、co11n 的用戶出口&#xff0c;發料不足不允許報工時 EXIT_SAPLCORF_104 查找用戶出口的函數&#xff1a; MODX_FUNCTION…

subject.login(token)是如何確認賬號密碼的_教你如何刪除、關閉、注銷微信小程序...

微信小程序是我們日常生活中經常會接觸到的工具&#xff0c;打開小程序后&#xff0c;它就會留在我們微信的”“發現-小程序”欄。很多人并不知道該如何刪除、關閉小程序&#xff0c;所以今天就跟大家科普下相關問題。1.如何刪除小程序首先&#xff0c;打開微信界面&#xff0c…

上海交通大學2006年數學分析考研試題

轉載于:https://www.cnblogs.com/zhangzujin/p/4078900.html

saltstack 基礎入門文檔

saltstack 和 Puppet Chef 一樣可以讓你同時在多臺服務器上執行命令也包括安裝和配置軟件。Salt 有兩個主要的功能&#xff1a;配置管理和遠程執行。這里講述了saltstack的基本使用方法。 saltstack 簡述 Salt 和 Puppet Chef 一樣可以讓你同時在多臺服務器上執行命令也包括安裝…

出現的是亂碼_cad狀態欄出現了方框亂碼怎么辦?

左下角閱讀原文看CAD視頻好課推薦&#xff1a;1、CAD2014&#xff1a;點擊查看 2、室內&全屋&#xff1a;點擊查看 3、CAD2019&#xff1a;點擊查看4、CAD2018&#xff1a;點擊查看5、Bim教程&#xff1a;點擊查看6、室內手繪&#xff1a;點擊查看7、CAD三維&#xff1a;點…

UILabel 詳解

UILabel 多行文字自動換行 &#xff08;自動折行&#xff09;1.UIView *footerView [[UIView alloc] initWithFrame:CGRectMake(10, 100, 300, 180)]; 2. UILabel *label [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 150)]; 3. label.text "…

mysql創建數據庫指定字符集

mysql 創建 數據庫時指定編碼很重要&#xff0c;很多開發者都使用了默認編碼&#xff0c;但是我使用的經驗來看&#xff0c;制定數據庫的編碼可以很大程度上避免倒入導出帶來的亂碼問題。 我們遵循的標準是&#xff0c;數據庫&#xff0c;表&#xff0c;字段和頁面或文本的編碼…

onclick實現超鏈接_給超鏈接加onclick事件

在動態網頁中&#xff0c;常常需要在單擊超鏈接時處理一些數據&#xff0c;而不是跳轉一個網頁。在這種情況下&#xff0c;通常有以下三種處理方式&#xff1a;不設置標簽的href屬性&#xff0c;只設置onclick屬性。在這種處理方式下&#xff0c;通常超鏈接文本會和正文的文本以…

Android 布局以及優化資料匯總

2019獨角獸企業重金招聘Python工程師標準>>> 1.性能優化之布局優化 2.Android 開源庫 V - Layout 轉載于:https://my.oschina.net/zhugenqiang/blog/822942

AS3容易被忽略的一些特性

1.給sprite設置背景色 給sprite設置背景色&#xff0c;spr.opaqueBackground 0xFFCC33, 在尺寸變化的時候自動重繪背景。需要注意的是背景不能接受鼠標事件&#xff0c;接受鼠標事件的話&#xff0c;需要用graphics繪制背景。 2.在ByteArray里writeUTF("中方漢字")&…

每天一個JavaScript實例-canvas繪圖

<!DOCTYPE html> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8" /> <title>每天一個JavaScript實例-canvas繪圖</title> <style>.canvas{width:600px;height:500px;} </s…

mysql字符集排序規則_Mysql 字符集及排序規則

一、字符集字符集&#xff1a;就是用來定義字符在數據庫中的編碼的集合。常見的字符集&#xff1a;utf8、Unicode、GBK、GB2312(支持中文)、ASCCI(不支持中文)二、字符集排序規則作者本人用的是utf8_general_ci后綴ci (case insensitive)意味不區分大小寫(大小寫不敏感)&#x…

驅動06.觸摸屏驅動程序

1.觸摸屏的簡介 觸摸屏是標準的輸入設備&#xff0c;在寫驅動程序時采用的之前講過的輸入子系統那套框架。我們無需關心對設備文件的操作&#xff0c;只需關心對硬件寄存器的操作和上報事件即可。 觸摸屏是附在LCD上的一層薄膜&#xff0c;并不是我們平時認識的觸摸屏&#xff…

編碼文件AndroidStudio初體驗:解決Execution failed for task ':TestAndroid:compileDebug'.

最近研究編碼文件&#xff0c;稍微總結一下&#xff0c;以后繼續補充&#xff1a; Execution failed for task :TestAndroid:compileDebug.有各種各樣原因&#xff0c;具體就請自己進cmd編譯看什么地方出錯 進入項目的gradle文件地點目錄打 gradlew compileDebug --stacktrace來…