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 ...