最全名企筆試題+算法題

·給定一顆二叉樹,要求輸出二叉樹的深度以及中序遍歷二叉樹得到的序列。本題假設二叉樹的結點數不超過1000。

Input

輸入數據分爲多組,第一行是測試數據的組數n,下面的n行分別代表一棵二叉樹。每棵二叉樹的結點均爲正整數,數據爲0代表當前結點爲空,數據爲-1代表二叉樹數據輸入結束,-1不作處理。二叉樹的構造按照層次順序(即第1層1個整數,第2層2個,第3層4個,第4層8個…….,如果某個結點不存在以0代替)

Output 

輸出每棵二叉樹的深度以及中序遍歷二叉樹得到的序列。 

輸入示例: 

2

1 -1

1 2 03 4 -1 

輸出示例: 

1 1

3 3 24 1

 

 

 

 

 

·操作系統中可以使用LRU(Least Recently Used)內存淘汰舊數據的策略,如果內存需要加載新數據但空間不足,則會按照最近訪問時間進行排序,並將最老的數據淘汰。假設現在內存空間大小爲5,原本內存中沒有數據,對內存中數據的訪問順序如下: 

1,2,5,3,4,6,1,4,3,6,7,8,3,9 

問訪問過程中發生缺頁的次數是多少次? 

A. 缺頁次數:4

B. 缺頁次數:10

C. 缺頁次數:5

D. 缺頁次數:9

 

 

 

·設一組初始記錄關鍵字序列爲(49、38、65、97、76、13、27、49),則以第一個關鍵字49爲基準而得到的一趟快速排序結果是() 

A. 38,13,27,49,49,65,97,76

B. 13,27,38,49,65,76,97,49

C. 27,38,13,49,76,97,65,49

D. 27,38,13,49,97,76,65,49

  

 

 

·使用 KMP 算法在文本串 S 中找模式串 P 是一種常見的方法。假設 S=P={xyxyyxxyx},亦即將 S 對自己進行匹配,匹配過程中正確的 next數組是____。 

A. 0,1,1,2,2,1,2,2,3

B. 0,1,2,2,3,1,2,2,3

C. 0,1,1,2,3,1,2,2,3

D. 0,1,1,2,3,1,1,2,3

E. 0,1,2,2,3,1,1,2,3

F.  0,1,2,2,2,1,1,2,3

  

 

 

·已知二叉樹中有45個葉節點,有25個度爲1的節點,則二叉樹的總結點數爲____ 

A. 112

B. 113

C. 114

D. 115

E. 116

F. 117

 

 

 

 

·設x和y是二叉樹中的任意兩個節點,若在先根序列中x在y之前,而在後根序列中x在y之後,則x和y的關係是(  )

A、 x是y的右兄弟

B、 x是y的子孫

C、x是y的祖先

C、 x是y的左兄弟

 

  

 

 

·有兩個完全相同的正方體,各面分別有數字1,2,3,4,5,6.把兩個正方體放到桌子上,正面的數字加起來等於偶數的情形有多少種(  )(提示:1+3與3+1是一種情況)

A、 24

B、 9

C、 18

D、 12

 

 

 

 

 

 

·已知數據元素爲(34,76,45,18,26,54,92,65),按照依次插入節點的方法生成一棵二叉排序樹,則該樹的深度爲(  )

A、 7

B、 6

C、 4

D、 5

 

 

 

 

 

·對關鍵碼序列28,16,32,12,60,2,5,72快速排序,從小到大一次劃分結果爲( )

A、 (5,16,2,12)28(60,32,72)

B、 (2,5,12,16)28(60,32,72)

C、 (2,16,12,5)28(60,32,72)

D、 (5,16,2,12)28(32,60,72)

 

 

 

 

 

·用三叉鏈表作二叉樹的存儲結構,當二叉樹中有n個結點時,有(  )個空指針。

A、 n+1

B、 n

C、 n+2

D、 n-1

 

 

 

 

 

 

 

·輸入序列是ABC,輸出序列變爲BCA時,經過的棧操作爲(  )

A、 push,push,push,pop,pop,pop

B、 push,push,pop,push,pop,pop

C、 push,pop,push,push,pop,pop

D、 push,push,pop,pop,push,pop

 

 

 

 

 

 

·下面關於求關鍵路徑的說法不正確的是(  )

A、 一個事件的最遲開始時間爲以該事件爲尾的弧的活動最遲開始時間與該活動的持續時間的差

B、 求關鍵路徑是以拓撲排序爲基礎的

C、 一個事件的最早開始時間同以該事件爲尾的弧的活動最早開始時間相同

D、 關鍵活動一定位於關鍵路徑上

 

 

 

 

·已知關鍵字序列5,8,12,19,28,20,15,22是最小堆,插入關鍵字3,調整後得到的最小堆是(  )

A、 3,8,12,5,20,15,22,28,19

B、 3,5,12,19,20,15,22,8,28

C、 3,12,5,8,28,20,15,22,19

D、 3,5,12,8,28,20,15,22,19

 

 

 

 

 

·題目描述 

“呼!!終於到了,可是接下來要怎麼走才能到達楚楚街港港呢?”亮亮在醋溜港直髮愁。 

 突然“啾”的一下,一隻銀色小船出現在亮亮的面前,上面坐着小精靈丹丹“又見面了,有什麼可以幫助你的麼?” 

小精靈向亮亮眨了眨眼睛,微笑着說。 “我想去楚楚街港,但我不知道要怎麼走,請問你可以告訴我麼?”亮亮按捺着激動的心情輕聲問道。 

 “楚楚街港呀……那是個特別美好的地方”小精靈歪着頭想了想,說“我只能告訴你大海上所有的航線,剩下的就只能靠你自己啦~” 

“只有所有的航線呀”,亮亮的內心再三掙扎,卻又沒有其他的辦法。 “不管有多困難,我一定要達到楚楚街港,請你告訴我吧”亮亮堅定地對小精靈說。  

小精靈欣賞地點了點頭,遞給亮亮一張航線圖,並叮囑道“時限是1000天,一定要到哦~”,然後如來時一般“啾”的一聲,消失了。 

亮亮現在迫切地想要抵達楚楚街港,請問亮亮最快能在第幾天抵達楚楚街港呢? 

輸入描述: 

一行包含兩個整數 N(2<=N<=500),M(1<=M<=2000),用單個空格隔開。表示公有 N 個港,M 條航線。起點爲 1,終點爲 N。 

接下來 M 行,每行包含五個整數P,Q(1<=P,Q<=n),K(1<=K<=1000),X,Y(0<=X,Y<=10000),代表 P、Q 兩個港有航線並需要 K 天,並且該航線在第 X 天到第 Y 天天氣惡劣不可通行。 

輸出描述: 

一個整數,即亮亮最快能在第幾天抵達楚楚街港 

輸入例子: 

4 4

2 1 17 13

4 3 210 11

1 3 89 12

2 3 32 10 

輸出例子: 

14

 

 

 

 

 

 

·題目描述 

亮亮深吸一口氣,小心地將盒子打開,裏面是一張地圖,地圖上除了一些奇怪的字母以外沒有任何路線信息,這可讓亮亮犯了愁,這些字母代表了什麼意思呢? 亮亮絞盡腦汁也想不出什麼思路,突然,亮亮眼前一亮,“我可以把這些字母所有的排列方式全部寫出來,一定可以找到答案!” 於是,亮亮興奮的開始尋找字母裏的祕密。 

輸入描述: 

每組數據輸入只有一行,是一個由不同的大寫字母組成的字符串,已知字符串的長度在1到9之間,我們假設對於大寫字母有’A’ < ‘B’ < … < ‘Y’ < ‘Z’。 

輸出描述: 

輸出這個字符串的所有排列方式,每行一個排列,要求字母序比較小的排列在前面。 

輸入例子: 

WHL 

輸出例子: 

HLW

HWL

LHW

LWH

WHL

WLH

 

 

 

 

 

 

·題目描述 

原來是要到醋溜站臺乘坐醋溜快車到醋溜港”,亮亮解出了地圖隱藏的祕密,趕緊奔向醋溜站臺,但到了之後,亮亮憂桑地發現,從醋溜站臺到醋溜港沿途的每個車站都有很多美女被他颯爽的英姿所吸引,只要經過車站就會被這些漂亮的女孩搭訕,但是現在亮亮一心想要尋找楚楚街而沒空去搭理她們,所以亮亮希望在抵達醋溜港的時候被搭訕的次數最少。問亮亮抵達醋溜港最少會被搭訕多少次? 

輸入描述: 

第一行包含兩個整數N(2<=N<=5000),M(1<=M<=50000)。N表示公有N個汽車站,M表示公有M條公路,起點爲1,終點爲N。

第二行包含N個整數(0<=K<=10000),第i個整數表示在第i站有K個美女想要搭訕亮亮。

接下來M行,每行包含兩個整數P(1<=P<=N),Q(1<=Q<=N),代表P,Q兩個站是有班車直達的。 

輸出描述: 

一個整數,即亮亮抵達醋溜港最少需要被搭訕的次數。 

輸入例子: 

5 5

0 1 13 6

1 2

1 4

2 3

3 5

4 5 

輸出例子: 

8

 

 

 

 

 

 

 

·輸入一個正整數n,求n!(即階乘)末尾有多少個0? 比如::n = 10; n! = 3628800,所以答案爲2 

輸入描述: 

輸入爲一行,n(1 ≤ n ≤ 1000) 

輸出描述: 

輸出一個整數,即題目所求 

輸入例子: 

10 

輸出例子: 

2

 

 

 

 

 

 

·題目:

公司進行了一次黑客馬拉松大賽,全公司一共分爲了N個組,每組一個房間排成一排開始比賽,比賽結束後沒有公佈成績,但是每個組能夠看到自己相鄰的兩個組裏比自己成績低的組的成績,比賽結束之後要發獎金,以1w爲單位,每個組都至少會發1w的獎金,另外,如果一個組發現自己的獎金沒有高於比自己成績低的組發的獎金,就會不滿意,作爲比賽的組織方,根據成績計算出至少需要發多少獎金才能讓所有的組滿意。  

輸入描述:

每組數據先輸入N,然後N行輸入N個正整數,每個數表示每個組的比賽成績。 

輸出描述:

輸出至少需要多少w的獎金 

示例1 

輸入 

10

20 

32 

12 

32 

45 

11 

21 

31 

41 

33 

輸出

20

 

 

 

 

 

 

 

 

 

·設有一組關鍵字序列{5,8,14,20,31,55,78,81,93,97,111},使用二分(折半)法查找關鍵字93需要進行多少次比較() 

A. 2

B. 3

C. 4

D. 5

 

  

 

 

 

·題目:給定一個字符串s,你可以從中刪除一些字符,使得剩下的串是一個迴文串。如何刪除才能使得迴文串最長呢?

輸出需要刪除的字符個數。

輸入描述:

輸入數據有多組,每組包含一個字符串s,且保證:1<=s.length<=1000. 

輸出描述:

對於每組數據,輸出一個整數,代表最少需要刪除的字符個數。 

輸入例子:
abcda
google 
輸出例子:
2
2

 

 

 

 

 

·題目描述 

輸入一個字符串,求出該字符串包含的字符集合 

輸入描述: 

每組數據輸入一個字符串,字符串最大長度爲100,且只包含字母,不可能爲空串,區分大小寫。 

輸出描述: 

每組數據一行,按字符串原有的字符順序,輸出字符集合,即重複出現並靠後的字母不輸出。 

輸入例子: 

abcqweracb 

輸出例子: 

abcqwer

 

 

 

 

·對關鍵字{25,15,30,10,50,3,5,60}序列進行快速排序,第一趟從小到大一次劃分結果爲( ) 

A. {3,5,10,15} 25 {50,30,60}

B. {5,15,3,10} 25 {50,30,60}

C. {3,15,10,5} 25 {50,30,60}

D. {5,15,3,10} 25 {30,50,60}

 

 

 

 

 

 

·題目: 

有如下一個類似跳錶的數據結構:每層都是已經排好序的鏈表,level1層的鏈表有所有元素,levelN 層的鏈表只有 levelN-1 的 1 半的元素,levelN 層的結點指向levelN-1 層中相同的結點。請問查找一個元素的時間複雜度是() 

A、(logn)

B、(n)

C、(nlogn)

D、O(n^2)

 

 

 

 

 

·題目: 

一個有n個結點的連通圖的生成樹是原圖的最小連通子圖,且包含原圖中所有n個結點,並且有保持圖聯通的最少的邊。最大生成樹就是權和最大生成樹,現在給出一個無向帶權圖的鄰接矩陣,權爲0表示沒有邊。{{0,4,5,0,3},{4,0,4,2,3},{5,4,0,2,0},{0,2,2,0,1},{3,3,0,1,0}},求這個圖的最大生成樹的權和。 

A、11

B、12

C、13

D、14

E、15

 

 

 

 

 

·題目描述 

在股市的交易日中,假設最多可進行兩次買賣(即買和賣的次數均小於等於2),規則是必須一筆成交後進行另一筆(即買-賣-買-賣的順序進行)。給出一天中的股票變化序列,請寫一個程序計算一天可以獲得的最大收益。請採用實踐複雜度低的方法實現。 

給定價格序列prices及它的長度n,請返回最大收益。保證長度小於等於500。 

測試樣例: 

[10,22,5,75,65,80],6 

返回: 

87

 

 

 

·大富翁遊戲,玩家根據骰子的點數決定走的步數,即骰子點數爲1時可以走一步,點數爲2時可以走兩步,點數爲n時可以走n步。求玩家走到第n步(n<=骰子最大點數且是方法的唯一入參)時,總共有多少種投骰子的方法。  

輸入描述: 

輸入包括一個整數n,(1 ≤ n ≤ 6) 

輸出描述: 

輸出一個整數,表示投骰子的方法 

輸入例子: 

6 

輸出例子: 

32

 

 

 

 

 

 

·給定一組非負整數組成的數組h,代表一組柱狀圖的高度,其中每個柱子的寬度都爲1。 在這組柱狀圖中找到能組成的最大矩形的面積(如圖所示)。 入參h爲一個整型數組,代表每個柱子的高度,返回面積的值。  

輸入描述: 

輸入包括兩行,第一行包含一個整數n(1 ≤ n ≤ 10000)

第二行包括n個整數,表示h數組中的每個值,h_i(1 ≤ h_i ≤ 1,000,000) 

輸出描述: 

輸出一個整數,表示最大的矩陣面積。 

輸入例子: 

6

2 1 56 2 3 

輸出例子: 

10

 

 

 

 

 

 

 

·題目描述 

給定一個字符串,問是否能通過添加一個字母將其變爲迴文串。 

輸入描述: 

一行一個由小寫字母構成的字符串,字符串長度小於等於10。 

輸出描述: 

輸出答案(YES\NO). 

輸入例子: 

coco 

輸出例子: 

YES

 

 

 

 

 

 

 

 

·繪畫展覽門票每張5元,如果有2*n個人排隊購票,每人一張,並且其中一半人恰有5元錢,另一半人恰有10元錢,而票房無零錢可找,那麼如何將這2*n個人排成一列,順次購票,使得不至於因票房無零錢可找而耽誤時間,應該採用什麼算法解決呢?

 

 

 

 

 

 

 

 

·題目: 

在N*M的草地上,提莫種了K個蘑菇,蘑菇爆炸的威力極大,蘭博不想貿然去闖,而且蘑菇是隱形的。有一種叫做掃描透鏡的物品可以掃描出隱形的蘑菇,於是他回了一趟戰爭學院,買了2個掃描透鏡,一個 掃描透鏡可以掃描出(3*3)方格中所有的蘑菇,然後蘭博就可以清理掉一些隱形的蘑菇。問:蘭博最多可以清理多少個蘑菇?

注意:每個方格被掃描一次只能清除掉一個蘑菇。  

輸入描述:
第一行三個整數:N,M,K,(1≤N,M≤20,K≤100),N,M代表了草地的大小;
接下來K行,每行兩個整數x,y(1≤x≤N,1≤y≤M).代表(x,y)處提莫種了一個蘑菇.
一個方格可以種無窮個蘑菇. 
輸出描述:
輸出一行,在這一行輸出一個整數,代表蘭博最多可以清理多少個蘑菇.

 

 

 

 

·題目:

有一樓梯共m級,剛開始時你在第一級,若每次只能跨上一級或者二級,要走上m級,共有多少走法?注:規定從一級到一級有0種走法。 

給定一個正整數int n,請返回一個數,代表上樓的方式數。保證n小於等於100。爲了防止溢出,請返回結果Mod 1000000007的值。 

測試樣例:3,返回:2


 

 

 

·題目描述 

兩個搜狐的程序員加了一個月班,終於放假了,於是他們決定扎金花渡過愉快的假期 。 

遊戲規則: 

共52張普通牌,牌面爲2,3,4,5,6,7,8,9,10,J,Q,K,A之一,大小遞增,各四張; 每人抓三張牌。兩人比較手中三張牌大小,大的人獲勝。 

對於牌型的規則如下:

1.三張牌一樣即爲豹子

2.三張牌相連爲順子(A23不算順子)

3.有且僅有兩張牌一樣爲對子 豹子>順子>對子>普通牌型 在牌型一樣時,比較牌型數值大小(如AAA>KKK,QAK>534,QQ2>10104) 在二人均無特殊牌型時,依次比較三張牌中最大的。大的人獲勝,如果最大的牌一樣,則比較第二大,以此類推(如37K>89Q) 如二人牌面相同,則爲平局。

 

輸入描述: 

輸入兩個字符串代表兩個玩家的牌(如”10KQ” “354”),先輸入的作爲玩家1,後輸入的作爲玩家2 

輸出描述: 

1 代表 玩家1贏 0 代表 平局 -1 代表 玩家2贏 -2 代表不合法的輸入 

輸入例子: 

KQ33Q9

10QA6102

58107KK

63274J

10102K77

JKJ926

68K27A 

輸出例子:

1

1

-1

-1

1

1

-1

 

 

 

 

 

 

·給定一個長度爲N的數組,找出一個最長的單調自增子序列(不一定連續,但是順序不能亂) 例如:給定一個長度爲8的數組A{1,3,5,2,4,6,7,8},則其最長的單調遞增子序列爲{1,2,4,6,7,8},長度爲6。 

輸入描述: 

第一行包含一個整數T,代表測試數據組數。

對於每組測試數據: N-數組的長度

a1 a2… an (需要計算的數組)

保證: 1<=N<=3000,0<=ai<=MAX_INT. 

輸出描述: 

對於每組數據,輸出一個整數,代表最長遞增子序列的長度。 

輸入例子: 

2

7

89256 78 1 46 78 8

5

6 4 82 17 

輸出例子: 

3

3

 

 

 

 

·題目描述 

給定兩個字符串A、B(只包含26個英文字母),輸出所有公共的最長子字符串(如果出現重複子串,則輸出多次) 

輸入描述 

輸入包括兩行,每行爲一個連續字符串(大小寫敏感) 

輸出描述 

輸出包括多行,每行爲掃描到的最長公共子串,按照該子串在字符串A(即第一行輸入字符串)中出現的先後次序輸出 

樣例輸入: 

abcxyzabcrst

opqrstabc 

樣例輸出: 

abc

abc

rst

 

 

 

 

 

 

·題目描述 

小易經常沉迷於網絡遊戲.有一次,他在玩一個打怪升級的遊戲,他的角色的初始能力值爲 a.在接下來的一段時間內,他將會依次遇見n個怪物,每個怪物的防禦力爲b1,b2,b3…bn. 如果遇到的怪物防禦力bi小於等於小易的當前能力值c,那麼他就能輕鬆打敗怪物,並 且使得自己的能力值增加bi;如果bi大於c,那他也能打敗怪物,但他的能力值只能增加bi 與c的最大公約數.那麼問題來了,在一系列的鍛鍊後,小易的最終能力值爲多少? 

輸入描述: 

對於每組數據,第一行是兩個整數n(1≤n<100000)表示怪物的數量和a表示小易的初始能力值.

第二行n個整數,b1,b2…bn(1≤bi≤n)表示每個怪物的防禦力 

輸出描述: 

對於每組數據,輸出一行。每行僅包含一個整數,表示小易的最終能力值 

輸入例子: 

3 50

50105 200

5 20

30 2015 40 100 

輸出例子: 

110

205

 

 

 

 

 

 

·風口之下,豬都能飛。當今中國股市牛市,真可謂“錯過等七年”。 給你一個回顧歷史的機會,已知一支股票連續n天的價格走勢,以長度爲n的整數數組表示,數組中第i個元素(prices[i])代表該股票第i天的股價。 

假設你一開始沒有股票,但有至多兩次買入1股而後賣出1股的機會,並且買入前一定要先保證手上沒有股票。若兩次交易機會都放棄,收益爲0。 設法計算你能獲得的最大收益。 輸入數值範圍:2<=n<=100,0<=prices[i]<=100 

輸入例子: 

3,8,5,1,7,8 

輸出例子: 

12

 

 

 

 

 

·已知關鍵字序列[46, 79, 56, 38, 40, 84],採用快速排序(以位於最左位置的關鍵字爲基準)得到的第一次劃分結果爲 

A. [40, 38, 56, 46, 79, 84]

B. [38, 46, 79, 56, 40, 84]

C. [38, 46, 56, 79, 40, 84]

D. [40, 38, 46, 79, 56, 84]

 

 

 

 

·題目:用二進制來編碼字符串“abcdabaa”,需要能夠根據編碼,解碼回原來的字符串,最少需要多長的二進制字符串?()
A.12
B.14
C.18
D.24

 

 

 

 

 

·題目: 

假設支付寶紅包口令支持 1 到 6 位的數字組合,即’0’、’1’、’003’和’999999’都是合法的紅包口令,那麼總共可以有多少個合法的紅包口令______ 

A、999999

B、1000000

C、1010100

D、1010101

E、1111110

F、1111111

 

 

 

 

 

 

·題目: 

一種雙核CPU的兩個核能夠同時的處理任務,現在有n個已知數據量的任務需要交給CPU處理,假設已知CPU的每個核1秒可以處理1kb,每個核同時只能處理一項任務。n個任務可以按照任意順序放入CPU進行處理,現在需要設計一個方案讓CPU處理完這批任務所需的時間最少,求這個最小的時間。  

輸入描述: 

輸入包括兩行:

第一行爲整數n(1 ≤ n ≤ 50)

第二行爲n個整數length[i](1024 ≤ length[i] ≤4194304),表示每個任務的長度爲length[i]kb,每個數均爲1024的倍數。 

輸出描述: 

輸出一個整數,表示最少需要處理的時間 

輸入例子1: 

5

30723072 7168 3072 1024 

輸出例子1: 

9216

 

 

 

 

 

 

 

·題目: 

n 個字符構成的字符串,假設每個字符都不一樣,問有多少個子串? 

A、n+1

B、n(n+1)/2+ 1

C、2^n-1

D、n!

 





Good luck!

Write by  Jimmy.li












 

点赞