关注
思路间代码注释 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
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客十周岁生日快乐 #
206849次浏览 1932人参与
# 你觉得什么岗位会被AI替代 #
34941次浏览 232人参与
# 我和mentor的爱恨情仇 #
101731次浏览 922人参与
# 一人一个landing小技巧 #
143186次浏览 1498人参与
# 如果工作一直消耗情绪还要继续做吗 #
18121次浏览 83人参与
# 四大天坑是哪四家? #
101699次浏览 235人参与
# 互联网公司评价 #
479852次浏览 4091人参与
# 机械人春招想让哪家公司来捞你? #
377832次浏览 3127人参与
# 聊聊你的被动加班经历 #
4556次浏览 80人参与
# 在国企工作的人,躺平了吗? #
392173次浏览 3951人参与
# 我的求职精神状态 #
422544次浏览 3075人参与
# 华为工作体验 #
289472次浏览 1376人参与
# 实习吐槽大会 #
404992次浏览 2168人参与
# 工作压力大怎么缓解 #
138969次浏览 1261人参与
# 找工作以来,你最看不惯__ #
17743次浏览 352人参与
# 你的mentor是什么样的人? #
49299次浏览 705人参与
# 第一次找实习,我建议__ #
69346次浏览 841人参与
# 实习教会我的事 #
52256次浏览 413人参与
# 实习怎么做才有更好的产出 #
14141次浏览 264人参与
# AI coding的好用工具分享 #
21863次浏览 410人参与