关注
思路间代码注释 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
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 找工作能把i人逼成什么样 #
8521次浏览 92人参与
# 大学最后一个寒假,我想…… #
70431次浏览 713人参与
# 百融云创求职进展汇总 #
23803次浏览 181人参与
# 0经验如何找实习? #
20246次浏览 358人参与
# 大家每天通勤多久? #
63179次浏览 407人参与
# 你今年做了几份实习? #
6461次浏览 97人参与
# 度小满求职进展汇总 #
17492次浏览 87人参与
# 大厂面试初体验 #
82487次浏览 373人参与
# 面试尴尬现场 #
202056次浏览 782人参与
# 字节出了豆包coding模型 #
5813次浏览 58人参与
# 你的秋招第一场笔试是哪家 #
274171次浏览 2066人参与
# 双非本科的出路是什么? #
184556次浏览 1481人参与
# 你还有多少年退休? #
29947次浏览 195人参与
# 你开始找寒假实习了吗? #
11616次浏览 171人参与
# 你找工作经历过哪些骗局? #
7297次浏览 120人参与
# AMA #
2743次浏览 17人参与
# 打工人的工作餐日常 #
76248次浏览 520人参与
# 实习越久越好,还是多多益善? #
14495次浏览 143人参与
# 工作两年想退休了 #
201859次浏览 1783人参与
# 25年找工作是什么难度? #
11734次浏览 113人参与
# 一起聊华为 #
166216次浏览 809人参与

