拼多多2021秋招筆試題


2020.09.01 19:00 開發崗編程筆試
拼多多的筆試題還是略難一點的(對比深信服),但比不上華為300分的題難度,華為的題分值是有梯度的(100、200、300),只需100分即可通過

 

第一題

將n*n矩陣分8個區域打印圖形,從右上角逆時針標記對應區域的數字(1~8)
圖形

示例:

n=4
0 2 1 0
3 0 0 8
4 0 0 7
0 5 6 0
n=5:
0 2 0 1 0
3 0 0 0 8
0 0 0 0 0
4 0 0 0 7
0 5 0 6 0

思路:
區分這幾組大小關系即可填入對應位置

  • i與n/2
  • j與n/2
  • i與j
  • i+j與n

 

第二題

n*m 01矩陣可以移動任意一個1,求移動后1的連通塊最大大小

思路:

  • 先dfs/bfs求每個連通塊的大小
  • 枚舉所有節點0,判斷周圍4個方向相鄰1個連通塊個數是否為全部連通塊的個數
    • 若是 答案為:周圍連通塊大小之和
    • 若否 答案為:周圍連通塊大小之和 + 1 (可以從其他連通塊移動1填到此節點0)

 

第三題

01背包問題,n<200,V<5000。v[i]、c[i]可為負數,表示裝入后總容量可增大/總價值會減少

  • 滾動數組
    通過60%
  • 對v[i]排序,將v[i]<=0,c[i]>=0先放入背包,更改背包容量
    通過64%
  • 待解決

 

第四題

求1~N(N<1000000000) 內有多少個整數可以整除集合\(Y=\{Y_1,Y_2...Y_m\}(m\le 20)\)中某個元素

思路:容斥原理
注意到 1~N 內整除 x 的整數個數為 N/x,根據容斥原理,答案為

\[\sum {N \over Y_i} - \sum_{i\ne j} {N \over Y_i*Y_j} + \sum_{i\ne j,i\ne k,j\ne k} {N \over Y_i*Y_j*Y_k}- ... \]

注意:Y集合首先要調整為全部元素互質的集合,即不存在 \(Y_i = k*Y_j\)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM