字節(jié)跳動(dòng)2019春招研發(fā)部分python編程題匯總
1、萬萬沒想到之聰明的編輯
題目描述:


題解:
雙指針法
按照題目要求的規(guī)則來編寫程序,不要忘記處理輸入和輸出
import sys
n=int(input())#讀第一行
for i in range(n):
#s = list(input())
s = list(sys.stdin.readline().strip())#讀一行的字符串,轉(zhuǎn)化為list
k = 0 #每個(gè)循環(huán)都重新賦值。設(shè)置一個(gè)指針,檢查是否有重復(fù)
for j in range(len(s)):
s[k] = s[j]#賦值,如果有重復(fù),將后面的賦值給前面的
k += 1 #不論什么情況都加1
#下面處理重復(fù)的情況
if k > 2 and s[k-3] == s[k-2] and s[k-2] == s[k-1]:#有3個(gè)連續(xù)的,去掉最后一個(gè)
k-=1
if k > 3 and s[k-4] == s[k-3] and s[k-2] == s[k-1]:#AABB,去掉最后一個(gè)
k -= 1
print(''.join(s[:k])) #對(duì)輸出進(jìn)行處理
2、萬萬沒想到之抓捕孔連順
題目描述:

題解:
雙指針法
n, dist = map(int, input().split()) #n是建筑物數(shù)目,dist是兩個(gè)特工相距的最大距離
nums = list(map(int, input().split())) #列表nums存儲(chǔ)所有建筑物的坐標(biāo)(橫軸)
res = 0 #res埋伏方案數(shù)目
i = 0 #i為第一個(gè)特工的下標(biāo)
j = 2 #j為另外兩個(gè)特工最遠(yuǎn)位置的下標(biāo),因?yàn)橛腥齻€(gè)特工,所以j的下標(biāo)從2開始
while i < n-2:
while j < n and nums[j] - nums[i] <= dist: #符合埋伏條件,繼續(xù)搜尋
j += 1 #最后一次時(shí)會(huì)使j多加一次
if j - 1 - i >= 2:
num = j - i - 1 #num為C的底數(shù)
res += num * (num - 1) // 2 #排列組合C(num,2)=num!/(num-2)!*2!
i += 1
res= res%99997867
print(res)
3、雀魂啟動(dòng)!
題目描述:

題解:
def IShepai(str):
lenth=len(str)
#能否劃空
if lenth == 0:
return True
count1=str.count(str[0])
# 沒出現(xiàn)過雀頭,且第一個(gè)數(shù)字出現(xiàn)的次數(shù) >= 2,去掉雀頭剩下的能不能和牌
if lenth%3!=0 and count1>=2 and IShepai(str[2:])==True:
return True
# 如果第一個(gè)數(shù)字出現(xiàn)次數(shù) >= 3,去掉這個(gè)刻子后看剩下的能和牌
if count1 >= 3 and IShepai(str[3:])==True:
return True
# 如果存在順子,移除順子后剩下的能和牌
if str[0] + 1 in str and str[0] + 2 in str:
str1 = str[1:]
str1.remove(str[0]+1)
str1.remove(str[0]+2)
if IShepai(str1) == True:
return True
# 以上條件都不滿足,則不能和牌
return False
if __name__ == '__main__':
a=list(map(int, input().split()))
flag=0
#遍歷所有可以抓到的牌看能不能胡牌
for i in range(1,10):
al=sorted(a + [i])
#每個(gè)數(shù)字最多4張牌
if al.count(i)>4:
continue
else:
if IShepai(al) == True:
flag=1
print(i,end=" ")
if flag==0:
print(0)
4、特征提取
題目描述:

題解:
n = int(input()) # n代表測(cè)試用例的個(gè)數(shù)
while n > 0:
m = int(input()) # m代表視頻的幀數(shù)
res = 1 #res代表最長特征運(yùn)動(dòng)的長度
d = {} # 字典d記錄{貓咪的特征值(key),特征運(yùn)動(dòng)長度(特征值連續(xù)出現(xiàn)的次數(shù))}
for i in range(m):
l = list(map(int , input().split())) # 每行代表一幀
k = l[0] # 第一個(gè)數(shù)字是該幀的特征個(gè)數(shù)
tmp_d = {}
for j in range(k):
index = l[2 * j + 1]* 10 + l[2 * j + 2] #兩個(gè)數(shù)字形成的特征值歸一化為index
if index in d: # 此特征值出現(xiàn)在了上一幀中
tmp_d[index] = d[index] + 1
res = max(res, tmp_d[index]) # 更新res即最長特征運(yùn)動(dòng)的長度
else:
tmp_d[index] = 1
d = tmp_d #及時(shí)更新字典d的內(nèi)容
print(res)
n -= 1
5、畢業(yè)旅行問題
題目描述:

題解:
import itertools
n = int(input()) #城市個(gè)數(shù)n(1<n≤20,包括北京)
L = [] #城市間的車票價(jià)錢 n行n列的矩陣 [n][n]
for i in range(n):
L.append(list(map(int, input().split())))
def treaval(L, n):
# 除起點(diǎn)之外的不同路線組合,假設(shè)起點(diǎn)為0號(hào)節(jié)點(diǎn)
com = list(itertools.permutations(list(range(1, n)), n - 1)) #range函數(shù)返回的是一個(gè)可迭代對(duì)象,而不是列表類型, 所以打印的時(shí)候不會(huì)打印列表。
spend = 9999 # 假設(shè)一開始花銷很大
for j in range(len(com)): #len(com)是可選擇的路線種類數(shù)
road = list(com.pop(0))# 獲取其中一種路線組合road列表之后就釋放,com是一個(gè)元組序列
# 補(bǔ)全起點(diǎn)和終點(diǎn)(注意起點(diǎn)也是終點(diǎn),形成閉環(huán))此時(shí)road長度為n+1
road.append(0)#在列表末尾添加新的對(duì)象
road.insert(0, 0)#將對(duì)象插入列表
x = 0 # 當(dāng)前路線的花銷
for i in range(n):
x = x + L[road[i]][road[i + 1]]
if x < spend:
spend = x #更新最小花銷
return spend
print(treaval(L, n))
只通過了33%
6、找零

題解:
動(dòng)態(tài)規(guī)劃
lyst = [64, 16, 4, 1] #硬幣列表(從大到小排列)
cost = 1024 - int(input())
res = 0 #最少得到的硬幣數(shù)量
for i in lyst:
res += cost//i #取整除 - 返回商的整數(shù)部分(向下取整)
cost %= i #取模 - 返回除法的余數(shù)
print(res)
7、機(jī)器人跳躍問題
題目描述:

題解:
import math
n = int(input())
arr = list(map(int, input().split()))
# 假設(shè)跳躍前能力為E,要跳的高度為H,那么跳躍后的能量就是E-(H-E)=2E-H,
# 那么跳躍后的能量加上高度就是跳躍前的兩倍,然后從后往前逆推。
E = 0 # 跳到最后一步的能力值設(shè)為0
arr.reverse()#翻轉(zhuǎn)列表逆推
for H in arr:
E = math.ceil((E + H ) / 2) #向上取整,以此保證剩余能量大于等于0
print(E)
到此這篇關(guān)于字節(jié)跳動(dòng)2019春招研發(fā)部分python編程題匯總的文章就介紹到這了,更多相關(guān)字節(jié)跳動(dòng)2019內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章

字節(jié)跳動(dòng)2019屆校招筆試題(小結(jié))
這篇文章主要介紹了字節(jié)跳動(dòng)2019屆校招筆試題,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-16
字節(jié)跳動(dòng)的三道編碼面試題的實(shí)現(xiàn)
這篇文章主要介紹了字節(jié)跳動(dòng)的三道編碼面試題的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-04-08字節(jié)跳動(dòng)抖音C++開發(fā)實(shí)習(xí)一二面涼經(jīng)
這篇文章主要介紹了字節(jié)跳動(dòng)抖音C++開發(fā)實(shí)習(xí)一二面涼經(jīng),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-03-31
字節(jié)跳動(dòng)后端開發(fā)視頻架構(gòu)面經(jīng)總結(jié)
這篇文章主要介紹了字節(jié)跳動(dòng)后端開發(fā)視頻架構(gòu)面經(jīng)總結(jié),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-02-25字節(jié)跳動(dòng)一面、二面涼經(jīng)(面試小結(jié))
這篇文章主要介紹了字節(jié)跳動(dòng)一面、二面涼經(jīng)(面試小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-02-03字節(jié)跳動(dòng)飛書音視頻服務(wù)器開發(fā)面經(jīng) (小結(jié))
這篇文章主要介紹了字節(jié)跳動(dòng)飛書音視頻服務(wù)器開發(fā)面經(jīng)(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2020-01-13




