拼多多 提前批0722(演算法工程師)筆試總結

2021-08-21 16:34:23 字數 1725 閱讀 6774

本次筆試題一共有四道演算法題目,難度都不算很大,總的來說是考察基礎能力加上一些思考能力。不同的崗位筆試題目是不同的。演算法工程師崗位四道程式設計題,題目沒有截圖沒有儲存,只是憑印象介紹,分別如下:

在一維陣列中,儲存著自然數,找出其子連續序列的長度,子串行滿足先減小後增大。也就是類似「v」一樣的山谷。一定滿足先減小增大,沒有等於,子串行長度一定要大於3,否則為0。

例如:輸入:[1,2,3,3,1,5]

輸出為:3

輸入:[1,2,3,2,1]

輸出為:0

用flag的方式判斷此時在什麼位置,如果是下降,遇到後項小的,那就繼續下降,如果後項更大,那就開始上公升,如果後項相等,那就直接丟棄重新考慮。如果是上公升,遇到後項小的,那就說明上公升結束,和最大的長度比較一下,遇到後項大的,那就繼續上公升,如果相等,也是結束上公升,和最大長度比較。

小的trick:在數列的初始位置新增乙個 -1,結束位置新增乙個-1,這樣在判斷的時候可以不需要考慮首位,比較容易考慮。

輸入乙個字串s,然後找到其最小的迴圈子串行p。對於每乙個s[i],s[i] = p[i%p_len]. p_len是p的長度。s長度小於100.

例如:輸入:abcabca

輸出:abc

輸入:abcdd

輸出:abcdd

由於s的長度不超過100,所以直接考慮使用乙個兩層迴圈的暴力來解決了。乙個個比對就好了,最後的時候比對需要稍微注意一下,因為可能不能完全整除,所以需要比對一部分的資料。

有乙個一維生物,只能在x座標系上面左右走。第一步走乙個座標系,第二步走兩個座標系,以此類推。初始位置在x = 0,目標位置為輸入,輸出為最小的步數。

例如:輸入為:6 

輸出為 : 3

(往右第1步到1,往右第2步到3,往右第3步到6)

輸入為:2

輸出為:3

(往右第一步到1,往左第二步到-1,往右第三步到2)

這個題說起來當時沒有時間做了,我下來想了一下,思路還是很清楚的,可以跟大家分享一下。

首先把這個可以考慮成 1+2+3+4+5...所有的步伐都往右走。如果剛好遇到乙個數字,例如是10,那就4步就好了,因為直達。但是如果是8呢,我四步到了以後發現越過了,那行,越過了兩步,那就在1的時候如果是往左,那就剛好相差兩步了。所以應該是 1+2+3+4 然後第一步往左,變成 -1+2+3+4,這樣得到的結果就是8了。那如果目標是9呢,因為10-9是1,沒辦法使用10來改變得到,所以可以再多一步,也就是1+2+3+4+5=15,這時候比9多了6,然後第三步往左就可以了。

到這個時候,問題已經解決了。也就是看目標值target所在累加的哪個值後面,如果累加到了n,再考慮n和target分別%2是否相同,如果相同,就是n步,如果不同,還需要再加一步。

例如:100   累加  1+2+...+14 = 105.並且 100 %2 != 105%2,所以一共14步+1步就可以啦。

給定乙個字串s,全都是數字,然後給定乙個k,希望s中相同的字串能夠滿足k個,修改乙個字元的消耗為字元間的差值。輸入為字串和k,輸出為消耗和修改後的字串,如果消耗相同,輸出字典序小的字串。

例如:輸入為: 1233321 5

輸出為     2    1333331 

輸入為: 99987776 4

輸入為  1 99987777

這個類似通排序,提前存好每乙個值的數目,然後依次判斷什麼時候才可以滿足k個的條件,先判斷減小的情況,再判斷增加的情況。其中還需要記錄一下相同的cost最小的那個字典序就行。這是乙個純粹的模擬題,需要考慮的樣例還是挺多的。細心判斷就好~

拼多多演算法工程師筆試題之分配巧克力

問題 給定n個孩子以及每個孩子需要的巧克力,給定m個巧克力以及巧克力的重量 輸出 最多可以分給幾個人 思路 一塊巧克力不能分給多人,多人也不能同分一塊巧克力,那麼符合條件的就是一塊巧克力分給乙個人指定最低的重量後巧克力剩餘量大於0即可 下面是具體的實現 usr bin env python enco...

2021屆匯頂提前批 FPGA工程師崗位面經

面試在上週六上午九點,匯頂有三次面試,一面技術面,二面hr面,三面綜合面,都是在乙個上午面完的,面了一上午。在進行 面試之前沒有通知,下午直接打 過來問方不方便面試,由於下午不太方便,所以把時間調整到了晚上。面試主要也是問的技術相關。首先讓進行了自我介紹。然後讓簡單介紹自己的專案,主要的框架和結構都...

拼多多測試工程師(二面) 用例設計

好不容易下定決心辭職之後,想去大廠試試。這段時間一直在準備去拼多多的第二次面試。一面是技術面,有一定的難度。按道理來說二面的通過率應該比較高才對,不過最近的二面通過率可能不到50 一面的通過率一般比較穩定保持在30 以下,所以兩面全過的概率大概只有15 左右,可能更低。那麼二面的通過率為什麼那麼低呢...