美团0817笔试第三题a
事后回忆的解法,应该没错叭。(* ̄m ̄)。不过第二题题目啥意思呀,求个路过的好心人解惑一下。
l=[2,2,3,4,5,6,7]
avg=sum(l)/len(l)
avg
count=0
if avg-int(avg)==0: # l=[1,2,3,4,5] 3.0做差即可
for i in l:
if avg-i>=1:
count+=int(avg)-i
print(count)
else:
down_=int(avg)
up_=int(avg)+1
count_d=0
count_u=0
for i in l:
if iup_:
count_u+=i-up_
# (5,3)次选5次,因为[4,4,4,4,5,5,5]后还需要进行加1次(5-3)=2次,2次可以被容纳,最后变为 [4,4,5,5,5,5,5]
print(max(count_d,count_u))
l=[2,2,3,4,5,6,7]
avg=sum(l)/len(l)
avg
count=0
if avg-int(avg)==0: # l=[1,2,3,4,5] 3.0做差即可
for i in l:
if avg-i>=1:
count+=int(avg)-i
print(count)
else:
down_=int(avg)
up_=int(avg)+1
count_d=0
count_u=0
for i in l:
if iup_:
count_u+=i-up_
# (5,3)次选5次,因为[4,4,4,4,5,5,5]后还需要进行加1次(5-3)=2次,2次可以被容纳,最后变为 [4,4,5,5,5,5,5]
print(max(count_d,count_u))
全部评论
要求结果是最小的操作,只有4和5时就可以停了,极差已经最小了

你这个应该没错,我感觉我和很多人过 0.3 还是因为判断是 avg 还是 avg+1 逻辑会有 bug,直接都计算取最大值应该可以。
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享