小菜找實習 阿里3月20日筆試第二題

2021-10-04 05:58:22 字數 1675 閱讀 3190

前言:筆者轉專業學生在美國讀研一,平時學習演算法主要是通過leetcode,公開課,google等方式。

這次找實習做國內這些筆試的演算法程式設計題,確實發現和平時寫的leetcode不一樣。有三點要注意

1.要注意輸入輸出的格式  國內的程式設計題是純白板,之前位元組跳動是我的第一場筆試,完全沒經驗,用了很長時間才弄懂國內的平台是怎麼處理輸入輸出的。所以位元組筆試直接涼涼,5道才ac一道。

2.leetcode上很多演算法的實現的容器大多都是陣列這樣的容器,有時候不需要你去考慮怎麼儲存。但是國內的場景程式設計演算法需要你自己考慮如何儲存資料。

3.還是要多練習,多親自去寫code。有時候感覺自己好像懂了,實際上**寫出來還是有bug(其實你只懂了**成)。

然後阿里第一場筆試的時間點上我正在經歷部門的二面,所以就沒參加上,打算參加27號那場(時間合適)。看了下第一場的題目,感覺還是有難度的,題目的難度大概在leetcode medium和hard之間。

首先定義上公升字串,s[i]≥s[i−1],比如aaa,abc是,acb不是

給n個上公升字串,選擇任意個拼起來,問能拼出來的最長上公升字串長度

樣例輸入

aaabcd

bcdef

zzz樣例輸出

11   

解釋:最長字串是aaabcdefzzz,長度為11

這道題類似leetcode上permutation,subset那種題(dfs深搜+backtrack回溯)實際上最簡單的思考也是暴力搜尋,考慮的是把每個字串拼接,儲存乙個全域性變數去儲存當前傳入字串的長度最大值。

dfs+backtrack圖例

**如下:

public class main 

public static void main(stringargs)

melodies.add(input);

}main mainsolver = new main(melodies);

helper("",0);

system.out.println(maxlength);

}/**

* * @param s 傳入的當前字串string

* @param n 每次搜尋開始位置

*/private static void helper(string s,int n)}}

}

一定要注意在每個for迴圈裡的最後要進行回溯!在本題中可以先用乙個temp字串儲存,最後再賦值給s。

不懂回溯的同學,或者很久沒看回溯的同學建議先複習一下相應知識點。

時間複雜度:2^n  空間複雜度:搜尋樹的深度

ps:今天在聽cs188ai這門課的csp的時候,發現老師講到了backtracking!

後記:其實寫這篇文章的時候,阿里部門二面過了,現在只剩筆試和總監面hr面。我和二面boss聊的時候還問筆試一道都ac不出來怎麼辦。boss說哈哈哈那你在之後的面試要解釋一下為什麼了,總之去寫,筆試也只是乙個參考而已,不是硬性指標。

anyway,希望筆試順利!筆試要是不順利也希望閒魚網開一面讓我過鴨~ 疫情之下的北美學生找實習太不容易了 回國的機票再不訂就買不起了咳咳,可是阿里的offer還沒拿到呢,又不敢訂機票。 

阿里巴巴2013實習招聘筆試題5月19日

時隔這麼久才將這篇文章寫出來,只是想給自己乙個提醒,5月19日參加了阿里巴巴的筆試,就乙個感觸 真不愧是業界的龍頭老大,出的題既有深度也有廣度。我答的那叫乙個扯啊。不說我了,我現在根據自己的印象吧那些題總結一下。綜合題 2 是給出了1到500的數字,每一次取出奇數字的數字,問最後乙個被拿掉的數字是什...

4月3號阿里實習筆試第一題題解

第一題,題意 給定個長度為n的陣列a n 要求出有多少個有價值的數,乙個數a x 是有價值的當且僅當在x前面存在大於a x 的最小數f,在x後面存在乙個小於a x 的最大數,且f是g的倍數。思路 先求出每個數的f,與g 判斷f g是否等於0,是的話ans 求f的話使用set容器將前面的數依次放入se...

3月16日 3月20日二年級課程表

二年級課程表 請各位家長注意翻看課程表下方學習指導 時間 周一周二 週三周四 周五9 00 9 25 心靈手巧 火花思維 一 竟 9 30 9 40 眼操眼操 眼操眼操 眼操9 40 10 00 運動運動 運動運動 運動10 00 10 10 科普 1 2周二的 銀鈴悅耳 中我們聽到了孟郊的 遊子吟...