2020字节跳动春招后端笔试题目(Python)

2020字节跳动春招后端笔试题目

4道编程题,每题100分
第一题
2020字节跳动春招后端笔试题目(Python)_第1张图片
2020字节跳动春招后端笔试题目(Python)_第2张图片
先遍历输入,并用序列存储L1,再用遍历序列L1,把各个类型的模型文件用字典存储,对于模型的名称用字符串形式存储,python代码如下:

n = int(input())
l1 = []
d = {}
for i in range(n):
    l1.append(input())
for i in l1:
    a = i.split()
    d[a[1]] = d.get(a[1],"") + a[0] + " " #记录对应的模型文件名字和用户类型,同一个模型文件名字下的用户类型名字用空格隔开
for i in d:
    d[i] = "".join(d[i].strip(" "))
for i in d:
    d[i] = " ".join((lambda x:(x.sort(),x)[1])(d[i].split()))
for i in d:
    print(i,d[i])

第二题
2020字节跳动春招后端笔试题目(Python)_第3张图片
2020字节跳动春招后端笔试题目(Python)_第4张图片
直接利用贪心算法解题,每一步移动都是尽可能到达最远距离的补给站,可以理解为不到万不得已时不进入补给站,代码实现如下:

import heapq
class minWater(object): #直接贪心算法就可以了
    def xiaolaji(self,startwater,stations):

        q = []
        res = pre = 0
        tank = startwater
        for loction, water in stations:             
            tank -= loction - pre
            while tank<0:
                if not q:
                    return -1
                tank += -heapq.heappop(q)
                res += 1
            heapq.heappush(q, -water)
            pre = loction
        return res
        
d,w = map(int,input().split())
l1 = list(map(int,input().split()))
l2 = list(map(int,input().split()))


station = []
for i in range(len(l1)):
    station.append([l1[i],l2[i]])
station.append([d,0])

laji = minWater()
print(laji.xiaolaji(w,station))

第三题
2020字节跳动春招后端笔试题目(Python)_第5张图片
2020字节跳动春招后端笔试题目(Python)_第6张图片
第四题
2020字节跳动春招后端笔试题目(Python)_第7张图片
2020字节跳动春招后端笔试题目(Python)_第8张图片
本人太菜最后两题并没有用python解出来,这里给出大佬的c++实现链接GitHub
第一次写博客文笔版面都很垃圾,希望大家多多理解,这也是记录我程序员生活的开始,加油。

你可能感兴趣的:(笔试复盘)