8.23 - hard - 99

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容