关注
思路间代码注释 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
查看原帖
点赞 评论
相关推荐
爱睡觉的冰箱哥:最难的是第一段吧,有一段其实很好找
点赞 评论 收藏
分享
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java 点赞 评论 收藏
分享
05-28 14:46
重庆大学 测试工程师 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 你觉得实习能学到东西吗 #
31011次浏览 632人参与
# 机械人集合!你是什么工程师? #
15340次浏览 88人参与
# 现代汽车前瞻技术研发急速编程挑战赛 #
25995次浏览 212人参与
# 秋招什么时候开投比较合适? #
19108次浏览 275人参与
# 发工资后,你做的第一件事是什么 #
67582次浏览 229人参与
# 如何准备秋招 #
18149次浏览 350人参与
# 百度工作体验 #
219304次浏览 1957人参与
# 机械人与华为的爱恨情仇 #
116214次浏览 942人参与
# 工作中哪个瞬间让你想离职 #
25469次浏览 177人参与
# 硬件应届生薪资是否普遍偏低? #
73615次浏览 514人参与
# 不考虑转正,实习多久合适 #
31602次浏览 145人参与
# 影石Insta360求职进展汇总 #
123146次浏览 1069人参与
# 通信和硬件还有转码的必要吗 #
57267次浏览 526人参与
# 24届的你们都什么时候入职? #
59973次浏览 424人参与
# 面试被问期望薪资时该如何回答 #
256001次浏览 1479人参与
# 实习,不懂就问 #
41984次浏览 643人参与
# 你们公司几号发工资 #
20542次浏览 139人参与
# 软开人,秋招你打算投哪些公司呢 #
102444次浏览 958人参与
# 每个月的工资都是怎么分配的? #
25174次浏览 408人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
28992次浏览 460人参与
# 你觉得现在还能进互联网吗? #
7520次浏览 130人参与