关注
思路间代码注释 def minDistance():
'''
想法:
如果项链是一条线,不是环,那么线上各珍珠最小移动距离为到中位数的移动距离,
所以遍历项链的n个位置,剪断,将项链拉成一条线,此时求最短移动距离,然后取最短
'''
l,n=list(map(int,input().strip().split()))
pos=list(map(int,input().strip().split()))
def __mindistance(onepos):
'''每条线的最短移动距离'''
if n%2==0 and n>2:
midNum1=onepos[n//2]
midNum2 = onepos[n//2 -1]
steps1 = 0
steps2 = 0
for num in onepos:
steps1 += abs(num - midNum1)
steps2 += abs(num - midNum2)
pianyi = 0
for i in range(n//2 -1):
pianyi += i
steps = min(steps1, steps2)
return steps - pianyi * 2 - n
else:
zhongweishu = onepos[n // 2]
steps = 0
for num in onepos:
steps += abs(num - zhongweishu)
pianyi = 0
for i in range(n // 2):
pianyi += i
return steps - pianyi * 2 - n+1
minstep=sum(pos)
for i in range(l):
pos_temp=[po-i if po>=i else l-i+po for po in pos]
pos_temp.sort()
step=__mindistance(pos_temp)
if step<minstep:
minstep=step
return minstep
查看原帖
点赞 评论
相关推荐
牛客热帖
正在热议
# 25届秋招总结 #
248266次浏览 2014人参与
# 学历or实习经历,哪个更重要 #
41123次浏览 300人参与
# 北方华创开奖 #
22834次浏览 259人参与
# 地方国企笔面经互助 #
2559次浏览 6人参与
# 你最想要的公司福利是? #
40065次浏览 126人参与
# 选完offer后,你后悔学本专业吗 #
10503次浏览 75人参与
# 面试题刺客退退退 #
137198次浏览 2092人参与
# 国企/银行/研究所公司爆料 #
89746次浏览 412人参与
# 应届生被毁约被毁意向了怎么办 #
27178次浏览 238人参与
# 一觉醒来,我觉醒了超级打工人系统 #
2911次浏览 35人参与
# 机械应届生薪资要多少才合适? #
12398次浏览 60人参与
# 查收我的offer竞争力报告 #
16842次浏览 228人参与
# 校招入职后的感受 #
156972次浏览 1961人参与
# 你觉得第一学历对求职有影响吗? #
14897次浏览 121人参与
# 没有实习经历,还有机会进大厂吗 #
805172次浏览 13814人参与
# 我的工作日记 #
21210次浏览 270人参与
# 不给转正的实习,你还去吗 #
1517108次浏览 16968人参与
# 寒假躺平还是提前实习 #
58456次浏览 438人参与
# 总结:哪家公司面试体验感最差 #
25772次浏览 129人参与
# 秋招OC许愿 #
226710次浏览 1872人参与
# 如何写一份好简历 #
602268次浏览 8443人参与