字节跳动python面试题_字节跳动第四批笔试题

第一题:

输入说明:

第一行输入n代表队伍中的人数

第二行输入队伍中每个人的身高(用空格隔开)

比如输入:

5

2 3 1 5 4

6

5 4 1 6 8 2

输出说明:

如果现在所在位置之前没有比自己身高高的,数值变为-1,如果现在所在位置之前有比自己身高高的,数值变为所在位置之前那个离自己最近的且比自己高的那个人的身高

上例的输入对应输出:

5

-1 -1 3 -1 4

6

-1 5 4 -1 -1 8

# --*-- coding : utf-8 --*--

def No1(k, ls):

if k == 0: return []

res = [-1]

if k == 1: return res

res = []

for i in range(k-1):

temp = ls[i + 1:]

#print(temp)

#print(ls[i + 1:])

if max(temp) <= ls[i]:

res.append(-1)

else:

for j in temp:

if j > ls[i]:

res.append(j)

break

res.append(-1)

return res

if __name__ == '__main__':

n = input()

n = int(n)

m = input().split(' ')

m = list(map(int, m))

m = list(reversed(m))

#print(m)

res1 = list(reversed(No1(n, m)))

print(n)

print(' '.join([str(x) for x in res1]))

思路:首先反转输入的列表,为什么反转是因为这样做就不是往前找比他大的值而是往后找比他大的数值了(注意别忘了转回来),从当前位置往后找比它大的值,找到了就赋值当前位置,然后break,找不到就赋值为-1,别忘了最后一个位置一定是-1。

第二题:

对于每组数据,如果A可以变成B,输出"Y",否则输出“N”。

输入:

3

0 1 2 3 4

2 1 0 4 3

0

0

0

1

输出

Y

Y

N

def No1(m,l):

s='N'

a=sorted(m)

b=sorted(l)

if a==b:

s="Y"

else:

s="N"

return s

if __name__ == '__main__':

n = input()

n = int(n)

s=[]

while n>0:

m = input().split(' ')

l = input().split(' ')

m = list(map(int, m))

l = list(map(int, l))

a = No1(m,l)

s.append(a)

n-=1

for i in s:

print(i)

这个题目比较简单

就是比较排序后的数组是否相同

第三题:

每组输入一行,分别是字符串S,T,如果有该子串则输出该子串,否则输出空串。

输入:ADSKBACWDWKDEH

输入:ABCD

输出:BACWD

# --*-- coding : utf-8 --*--

def minWindow(s,t):

from collections import Counter

t=Counter(t)

lookup=Counter()

start=0

end=0

min_len=float("inf")

res=""

while end

lookup[s[end]]+=1

end+=1

#print(start, end)

while all(map(lambda x: lookup[x]>=t[x],t.keys())):

if end-start

res=s[start:end]

min_len=end-start

lookup[s[start]]-=1

start+=1

return res

if __name__ == '__main__':

S = input()

T = input()

L=minWindow(S,T)

print(L)

整理不易,看官老爷们看完给个赞啊!

(不给也可以最好给个吧~在线卑微)

本文地址:https://blog.csdn.net/weixin_43518584/article/details/107296897

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值