关注
思路间代码注释 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
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
查看30道真题和解析 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 如果秋招能重来,我会____ #
10597次浏览 102人参与
# 苦尽甘来时,再讲来时路 #
10436次浏览 181人参与
# “vivo”个offer #
19243次浏览 150人参与
# 如果上班像打游戏,你最想解锁什么技能 #
2441次浏览 32人参与
# 我是面试官,请用一句话让我破防 #
2007次浏览 19人参与
# 为了实习逃课值吗? #
11889次浏览 98人参与
# 快手技术岗信息交流阵地 #
12370次浏览 74人参与
# 校招生月薪1W算什么水平 #
2858次浏览 22人参与
# 机械求职避坑tips #
71283次浏览 485人参与
# 一份好的简历长什么样? #
6647次浏览 170人参与
# 选完offer后,你后悔学机械吗? #
42977次浏览 249人参与
# 秋招许愿,本周能____ #
14233次浏览 93人参与
# 选择和努力,哪个更重要? #
134811次浏览 1036人参与
# 班味很重的人是啥样的? #
4191次浏览 30人参与
# 应届生第一份工资要多少合适 #
3513次浏览 36人参与
# 投递无反馈,如何优化求职策略? #
2323次浏览 26人参与
# 材料专业可以靠半导体脱坑吗? #
26801次浏览 138人参与
# 机械制造秋招总结 #
82457次浏览 817人参与
# 大学最后一个寒假,我想…… #
60509次浏览 654人参与
# 职场新人体验 #
120378次浏览 825人参与
# 你觉得实习能学到东西吗 #
114533次浏览 1248人参与
# 新凯来求职进展汇总 #
57976次浏览 150人参与
