8.23 - hard - 99
2017-08-24 本文已影响0人
健时总向乱中忙
517. Super Washing Machines
这题挺诡异的,不用到什么数据结构,用到一些数学想法。其中一种解法是先保证访问过的所有machine都处于平衡状态,而达到这个平衡状态需要加入衣服或者移出衣服。如果需要移出n件衣服,那么就是直接当前的machine要move n次,如果要加入衣服,那么下一个machine要move n次,因为之前的machine是全部都平衡的。
class Solution(object):
def findMinMoves(self, machines):
"""
:type machines: List[int]
:rtype: int
"""
if sum(machines) % len(machines) == 0:
target = sum(machines) / len(machines)
else:
return -1
move = [0]*len(machines)
result = 0
for i in range(len(machines)-1):
if machines[i] > target:
move[i] += machines[i] - target
machines[i + 1] += machines[i] - target
machines[i] = target;
result = max(result, move[i])
else:
move[i+1] = target - machines[i]
machines[i + 1] -= target - machines[i]
machines[i] = target
result = max(result, move[i+1])
return result