春招已經開始了。 你是否是已經開始準備了呢?爲了幫助你們得到更好的 offer,lucifer 開闢了春招沖沖衝欄目。git
今天咱們的獵物是釘釘和騰訊。來看看這兩家的算法題難度幾何吧!github
<!-- more -->面試
視頻地址:https://www.bilibili.com/vide...算法
一次遍歷便可,惟一須要注意的是補全再比較(邏輯補全便可,並不必定須要物理上真的去補全),時間複雜度 $O(m + n)$,其中 m 和 n 分別爲兩個版本號的長度數組
隨機生成一個長度爲 8 的字符並將其存到哈希表中,下次生成後判斷是否已經在哈希表中了。若是存在,說明以前生成過了,繼續生成。注意這種算法存在一直拒絕的可能,代碼會無限循環。緩存
維護一個窗口,當窗口內有數據才觸發請求批量上傳,一個窗口的長度爲 100m(可能大於) 內的全部請求微信
頭尾雙指針,不斷交換兩個指針的字符便可。ide
快慢雙指針典型題目。優化
典型的二分題目,不會的建議看下個人二分講義。個人刷題倉庫或者公衆號搜 二分 就行。設計
稍微有點難度了,這個題很常見,難度不小,建議刷。我以前寫過題解了,直接甩給你們吧 146. LRU 緩存機制
我給了 JS, Go, PHP, Python3 四種語言,有你的菜麼?
沒啥難度,直接模擬。
鏈表和數組本質沒有不一樣,只是具體操做不同。所以掌握鏈表基本操做就好了。鏈表基本操做有哪些?須要注意什麼?個人鏈表專題都給你們總結好了,建議閱讀。
題目是:給你一個整數數組 nums ,請你求出乘積爲正數的最長子數組的長度。一個數組的子數組是由原數組中零個或者更多個連續數字組成的數組。請你返回乘積爲正數的最長子數組長度。
這道題是求連續的乘積爲正數的最長子數組長度。這裏須要一個小學知識,兩個符號相同的相乘爲正數,兩個符號不一樣的數相乘爲負數(先不考慮 0)。 因而直接使用一維 DP + 一層循環便可。
定義狀態 positive[i] 爲 nums[i] 結尾的乘積爲正數的最長子數組長度,negative[i] 爲 nums[i] 結尾的乘積爲負數的最長子數組長度,因而答案就是 max(positive)。
接下來,遍歷 nums,對 nums[i] 的不一樣取值分類討論便可:
$$ positive[i]=positive[i−1]+1 $$
$$ negative[i]=\left\{ \begin{aligned} negative[i-1] + 1 & & negative[i-1] > 0 \\ 0 & & negative[i-1] = 0 \\ \end{aligned} \right. $$
$$ negative[i]=positive[i−1]+1 $$
$$ positive[i]=\left\{ \begin{aligned} negative[i-1] + 1 & & negative[i-1] > 0 \\ 0 & & negative[i-1] = 0 \\ \end{aligned} \right. $$
$$ negative[i]=positive[i] = 0 $$
狀態定義通常兩種套路:
兩種方式思路同樣,只是實操不同而已。我我的傾向於第二種。好比股票題,我就喜歡定義一個 buy 和 一個 sell 數組。再好比擺動數組,我就喜歡定義一個 up 和 一個 down 數組。
另外若是題目沒有限定連續,則須要兩層循環和一維 DP(滾動數組優化)。
我我的以爲算法題難度是中等,都很是常規,沒有什麼難以讀懂的題目或者冷門知識。
另外我組建了春招羣,你們面試遇到不會的題均可以問哦。想進羣的可在公衆號力扣加加後臺回覆春招獲取小祕書的微信,經過以後再次回覆春招入羣。
最後祝你們 offer 多多。