菜雞的2020年騰訊實習筆試

2020年4月26日的騰訊實習生筆試,一共有五道題,給了兩個小時。感覺都比較簡單,甚至沒有粵澳CPC的網絡賽難,但是我太菜了,只做出了三道題。
第一道題是簽到題:(每一道題我都wa了一遍,可能是緊張導致的?)

1.	模擬隊列
輸入t,有t組數據
輸入n,代表有n個操作
操作有5個:SIZE,CLEAR,PUSH X,POP,TOP。
SIZE:輸出隊列大小
CLEAR:清空隊列不輸出
PUSH X:把X放進隊列(1<=x<=1000)
POP:把頭元素拿掉 如果爲空輸出-1
TOP:輸出頭元素(不拿掉),如果爲空輸出-1
樣例
1
PUSH 1
PUSH 2
TOP
POP
TOP
CLEAR
輸出:
1
2

第二道題主要是我太菜了,搞不懂,剛開始想着貪心一下,然後O(n^2)跑兩個for,肯定tle,然後想着加個退出條件,但是還是過不了,orz,我太年輕了,過了0個樣例,後面直接暴力去跑一邊,過了60%的case,不知道筆試怎麼算分的,題沒過但是過了一些case,不知道算不算成績,這題沒整出來。

2.2組點集取名爲A點集和B點集,現在從A和B中選取一個,
    求兩點間距離的最小值
輸入t,有t組數據
輸入n,代表點集A和B都有n個
n行爲A點集,n行爲B點集
保留三位小數
1<=N<=100000
-10^9<=X,Y<=10^9
樣例(瞎編,忘了)
1
2
1 1
2 2
5 5
10 10
輸出
4.243

第三題n這個值很小,我一開始就覺得是跑個dfs,然後就開始敲代碼,剛開始是設置了兩個狀態,一個是不移動,另一個是和下一個進行交換。然後交了一發,過了10%還是20%的樣例,然後又想到一種情況,假設現在有卡牌ABC,我現在在B這個位置,我B和C換後,就變成了ACB然後我C再和A換就變成了CAB了,時間關係,我沒有仔細思考完這道題,最後是隻過了30%的case。

3.	現在有一套卡牌,從左到右排開,卡牌有正反面,正面的值爲ai,
	反面的值爲bi,可以翻轉相鄰的卡牌,翻轉的規則:先相互交換位置,
	然後都翻面。現在求最小的操作次數,確保從左到右不爲降序。
	
輸入n,代表有n個數(n<=18)
接下來有兩行 ,每行n個數,第一行爲a序列,第二行爲b序列
樣例
3
1 3 2
1 3 2
輸出:
1

第四道題和第一道題簽到題類似了。用兩個棧模擬隊列。我們設置兩個棧S1,S2。在我們push操作的時候,就放入S1這個棧,如果需要poll和peek操作的時候,我們把S1的數據倒入S2,在S2進行操作poll和peek,操作完後,再把S2倒回S1就完成了模擬隊列了。

4.	用兩個棧模擬隊列
peek操作爲輸出隊列的頭元素
poll操作爲去掉頭元素
push x操作爲把x放入隊列
輸入q(1<=q<=10^5(-10^?<=x<=10^?)(?爲忘記了,不過依稀記得?>=5)
輸出要求:
當操作爲peek時,輸出頭元素
樣例
5
push 1
push 2
push 3
peek
poll
peek
輸出:
1
2

最後一道題不難,題目給的是一顆滿二叉樹,全部節點都會有。在當前節點除以2就是它的父節點了,我們一直這樣進行“ /2 ”操作,最後就會回到根節點:1。然後把這些節點保存道一個數組裏,數組最後一個數字就是深度爲1的節點。雖然數據有1018,但是對於一顆滿二叉樹來說,它的深度其實並不大。複雜度O(log2n)

2n=1018(n是深度)
n = log21018
n = 18*log210
3< log210 <4
54<n<72
數組也就開到72左右的大小就足夠了

5.	給你一個滿二叉樹
例:(1節點,2節點,3節點***********1
   2  3
  4 5 6 7
-----------
現在輸入一個n,代表第n節點,輸入一個x代表深度。(1<=n<=10^18)
判斷n節點存不存在深度爲x的父節點(或祖父節點,曾祖父節點*****)
有則輸出節點編號,沒有輸出-1
樣例
10 1
10 2
10 3
10 4
輸出
1
2
5
-1

總結:自己太菜了,要提升的太多了,弱雞快要窒息了,又酸又菜又多魚,繼續加油吧~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章