一道很有意思的题目。想想最终的结果是由什么决定的。某一位置上最后要变成target(m-target),又要充当一个中转站(cur)。cur可正(送出)可负(接收)
class Solution(object):
def findMinMoves(self, machines):
"""
:type machines: List[int]
:rtype: int
"""
n=len(machines)
sm=sum(machines)
if sm%n !=0: return -1
target=sm//n
cur=res=0
for m in machines:
res=max(res,m-target,abs(cur))
cur+=m-target
return res