拼多多筆試題解析

2021-08-21 16:36:29 字數 1865 閱讀 2933

120分鐘,共四道程式設計題。

1.輸出乙個陣列a最長的「山谷」子陣列b的長度。山谷是指b[0]>b[1]>...b[i-1]>b[i]思路:對每個數,向左搜尋,若比當前數大,則一直搜尋。向右搜尋,若比當前數大,則一直搜尋。

**如下:

def findsubnum(nums):

ans=0

for i in range(1,len(nums)):

left,right=i,i

while left-1>=0 and nums[left-1]>nums[left]:

left-=1

while right+1nums[right]:

right+=1

ans=max(ans,right-left+1)

return ans if ans>=3 else 0

x=raw_input()

nums=list(map(int,x[1:-1].split(',')))

print findsubnum(nums)

2.leetcode 459題。

給定乙個非空的字串,判斷它是否可以由它的乙個子串重複多次構成。給定的字串只含有小寫英文本母,並且長度不超過10000。

示例 1:

輸入: "abab"

輸出: true

解釋: 可由子字串 "ab" 重複兩次構成。

不同的是這裡要輸出子串,且輸出的是最短子串。

**如下:

def repeatedsubstring(s):

lens=len(s)

for i in range(1,len(s)):

base=s[:i]

if base*(lens/i)==s:

return base

return false

x=raw_input()

print repeatedsubstring(x)

3.從x軸的零座標出發,走出的第n步,步長為n,即第一步移動的距離為1,第二步移動的距離為2。每次移動可以向左或向右移動。求最少需要走多少步才能到達target位置(target可以為負)。若無論怎麼走都達到不了,則輸出-1。

牛客網大佬的思路:target為正或負,所需要的步數是一樣的。target=abs(target)

1.求sum=1+2+...+k。是sum剛好大於target。diff=sum-target

2.若diff為偶數,則讓diff/2反向即可,共需要k步到達target。

3.若diff為奇數,讓任何數反向都是減少偶數距離,不會使得diff為0。因此讓diff+k+1

4.若diff+k+1為偶數,則根據1可知k+1步可到達target。

5.若diff+k+1為奇數,說明k+1為偶數,則k+2必然為奇數,因此diff+k+1+k+2必為偶數,即可以在k+2步時到達。

**如下:

def findtarget(target):

target=abs(target)

i=0sum=0

while sumi += 1

sum+=i

if sum==target:

return i

else:

diff=sum-target

if diff%2==0:

return i

else:

if (diff+i+1)%2==0:

return i+1

else:

return i+2

x=input()

print findtarget(x)

拼多多筆試 公司套餐

多多公司每天給員工提供免費的三餐,而小多由於習慣性賴床,所以他從來吃不 到早餐。今天公司提供了n套中餐和m套晚餐,每種 分別有乙個熱量值x和美味值y。小多想知道,在滿足美味值之和不少於t的情況下,最少可以攝入多少熱量值?注意 每頓飯最多只能選擇一種 小多可以選擇只吃一頓飯甚至不吃飯。輸入描述 第一行...

2018 8 5拼多多筆試題2 數字分組

輸入描述 輸入為一行,包含乙個字串形式的正整數 輸出描述 輸出為一行,找出經過 拆分 和 變化 後的所有組合數目 拆分操作 將乙個字串拆分成兩部分 變化操作 分別在這兩部分中加上乙個小數點或者不加 最後分別形成乙個整數和小數 形成的小數和整數滿足以下要求 1.不可包含多餘的字首0,即010和010....

拼多多筆試題 棋盤石子障礙物

題目 有個長方形的棋盤,每個格仔可能是以下三種情況,a,放有障礙物,不可移動。b 放置著小木塊,c 格仔為空 如果把棋盤豎起來,小木塊會向下掉落,直至落到障礙物上或者落到障礙物上疊加著的小木塊上,如果底部沒有障礙物時,則會掉出棋盤。請問棋盤的最終狀態。輸入描述 第一行包括2個整數n,m n 1,m ...