蹲一下团子8.10的笔试
#秋招笔试#
第三题都没写,死磕第二题,但是还是超时,只过了35%。求大佬指点迷津
,也不知道团子进面的笔试分要求多少,是不是第二题没全过就等于寄了
1. 第一题比较简单,输入的时候存一下密码长度就行
2. 第二题超时,抛砖引玉一下,求大佬指点
import sys
def get_mex(elements):
mex = 0
tempele = set(elements)
while mex in tempele:
mex += 1
return mex
def calc_min(elements, k, x):
cost = min(x, k*get_mex(elements[-1:]))
for i in reversed(range(len(elements)-1)):
cost = min(k*get_mex(elements[i:]), x+cost)
return cost
T = int(sys.stdin.readline().strip())
for _ in range(T):
temp = sys.stdin.readline().strip().split()
n,k,x = int(temp[0]), int(temp[1]), int(temp[2])
temp = sys.stdin.readline().strip().split()
elements = [int(i) for i in temp]
result = calc_min(elements, k, x)
print(result)
第三题都没写,死磕第二题,但是还是超时,只过了35%。求大佬指点迷津
1. 第一题比较简单,输入的时候存一下密码长度就行
2. 第二题超时,抛砖引玉一下,求大佬指点
import sys
def get_mex(elements):
mex = 0
tempele = set(elements)
while mex in tempele:
mex += 1
return mex
def calc_min(elements, k, x):
cost = min(x, k*get_mex(elements[-1:]))
for i in reversed(range(len(elements)-1)):
cost = min(k*get_mex(elements[i:]), x+cost)
return cost
T = int(sys.stdin.readline().strip())
for _ in range(T):
temp = sys.stdin.readline().strip().split()
n,k,x = int(temp[0]), int(temp[1]), int(temp[2])
temp = sys.stdin.readline().strip().split()
elements = [int(i) for i in temp]
result = calc_min(elements, k, x)
print(result)
全部评论
第二题为啥用set,我用一个freq数组记录a里每个元素出现的次数, 然后一个for loop从a[0] 到a[n]逐个删除,每次删除完以后用freq里第一个值为0的数字做mex
后知后觉,mex的计算那里从后往前计算只需要一个变量保持增长就可以达到O(n)复杂度了😭
import sys
def get_mex(elements):
mex = []
tempmex = 0
tempele = set()
for i in reversed(range(len(elements))):
tempele.add(elements[i])
while tempmex in tempele:
tempmex += 1
mex.append(tempmex)
return reversed(mex)
def calc_min(elements, mex, k, x):
cost = min(x, k*mex[-1])
for i in reversed(range(len(elements)-1)):
cost = min(k*mex[i], x+cost)
return cost
T = int(sys.stdin.readline().strip())
for _ in range(T):
temp = sys.stdin.readline().strip().split()
n,k,x = int(temp[0]), int(temp[1]), int(temp[2])
temp = sys.stdin.readline().strip().split()
elements = [int(i) for i in temp]
mex = get_mex(elements)
result = calc_min(elements, mex, k, x)
print(result)
第二题那个mex首次计算得On复杂度,用哈希表,leetcode上有题就是这个。但我光记得最大是n,然后排序做的没过
蹲
相关推荐
码农索隆:放宽心啦,你既然能进阿里,证明你的实力还是很强的。可能是这个组不适合你,要振作起来!
点赞 评论 收藏
分享
07-28 16:17
天津大学 硬件开发 点赞 评论 收藏
分享
07-22 09:09
河南科技学院 Java 程序员牛肉:1.大头肯定是院校问题,这个没啥说的。
2.虽然有实习,但是实习的内容太水了,在公司待了七个月的时间,看起来就只做了jwt和接入redis。爬取新闻,数据导入。这几个需求值得你做七个月吗?这不就是三四个月的工作量吗?我要是面试官的话真心会认为你能力不太行。所以既然有实习了,一定要好好写,像是Swagger这种东西是真没必要写上去,就拉一个包的事情。
3.我个人觉得话,在校生不要把自己当社招看,除非你的项目是特别牛逼,特别有名的含金量,否则不要写这种密密麻麻的一串子工作职责。你的项目只有一个作用,就是供面试官从中来抽取八股对你进行拷打。
但是你现在这个看不来什么技术点,可以改一下,详细表述一下你用什么技术实现了什么功能,在实现这个功能的过程中,你解决了什么难题。
点赞 评论 收藏
分享