原题地址:https://leetcode-cn.com/problems/super-washing-machines/submissions/

题目描述:

假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。

在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。

给定一个非负整数数组代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的最少的操作步数。如果不能使每台洗衣机中衣物的数量相等,则返回 -1。

示例 1:

输入: [1,0,5]

输出: 3

解释: 
第一步:    1     0 <-- 5    =>    1     1     4
第二步:    1 <-- 1 <-- 4    =>    2     1     3    
第三步:    2     1 <-- 3    =>    2     2     2   
示例 2:

输入: [0,3,0]

输出: 2

解释: 
第一步:    0 <-- 3     0    =>    1     2     0    
第二步:    1     2 --> 0    =>    1     1     1     
示例 3:

输入: [0,2,0]

输出: -1

解释: 
不可能让所有三个洗衣机同时剩下相同数量的衣物。

提示:

n 的范围是 [1, 10000]。
在每台超级洗衣机中,衣物数量的范围是 [0, 1e5]。

解题方案:

数学题:有四个洗衣机,装的衣服数为[0, 0, 11, 5],最终的状态会变为[4, 4, 4, 4],那么我们将二者做差,得到*[-4, -4, 7, 1],这里负数表示当前洗衣机还需要的衣服数,正数表示当前洗衣机多余的衣服数。我们要做的是*要将这个差值数组每一项都变为0,对于第一个洗衣机来说,需要四件衣服可以从第二个洗衣机获得,那么就可以 把-4移给二号洗衣机,那么差值数组变为[0, -8, 7, 1],此时二号洗衣机需要八件衣服,那么至少需要移动8次。然后二号洗衣机把这八件衣服从三号洗衣机处获得,那么差值数组变为[0, 0, -1, 1],此时三号洗衣机还缺1件,就从四号洗衣机处获得,此时差值数组成功变为了[0, 0, 0, 0],成功。那么移动的最大次数就是差值 数组中出现的绝对值最大的数字,8次

class Solution:def findMinMoves(self, machines: List[int]) -> int:sum_ = sum(machines)l = len(machines)if sum_ % l != 0:return -1target = int(sum_ / l)res = 0balance = 0for i in range(l):balance += machines[i] - targetres = max(res, machines[i] - target, abs(balance))return res

【LeetCode】517. 超级洗衣机 解题报告 (python)相关推荐

  1. LeetCode——517. 超级洗衣机(Super Washing Machines)[困难]——分析及代码(C++)

    LeetCode--517. 超级洗衣机[Super Washing Machines][困难]--分析及代码[C++] 一.题目 二.分析及代码 1. 贪心 (1)思路 (2)代码 (3)结果 三. ...

  2. Java实现 LeetCode 517 超级洗衣机

    517. 超级洗衣机 假设有 n 台超级洗衣机放在同一排上.开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的. 在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,与此同时将 ...

  3. LeetCode 517 超级洗衣机 解法

    来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/super-washing-machines 著作权归领扣网络所有.商业转载请联系官方授权,非商 ...

  4. leetcode: 517. 超级洗衣机

    题目 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/super-washing-machines 假设有 n 台超级洗衣机放在同一排上.开始的 ...

  5. 2020-5 leetcode 517. 超级洗衣机

    1.题意:对于这m台洗衣机,是可以分组相邻,然后同时进行衣服的传递的.两台多的洗衣机可以向同一台洗衣机传递衣服,但一台多衣服的洗衣机不能向多台少衣服的洗衣机传递衣服.因为洗衣机个数m任意选所以可以理解 ...

  6. 力扣517. 超级洗衣机

    517. 超级洗衣机 - 力扣(LeetCode) (leetcode-cn.com) class Solution {public int findMinMoves(int[] machines) ...

  7. 517. 超级洗衣机

    517. 超级洗衣机 假设有 n 台超级洗衣机放在同一排上.开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的. 在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗 ...

  8. LG P3990 【SHOI2013】 超级跳马 解题报告

    LG P3990 [SHOI2013] 超级跳马 解题报告 地址 看到 n ≤ 50 , m ≤ 1 0 9 n\leq 50,m\leq 10^9 n≤50,m≤109 的数据范围,可以想到矩阵快速 ...

  9. 【LeetCode】3Sum Closest 解题报告

    [题目] Given an array S of n integers, find three integers in S such that the sum is closest to a give ...

最新文章

  1. docker centos7_centos7-yum部署docker
  2. 【转】Lucene 工作原理
  3. mysql 开发规范_专业级的MySQL开发设计规范及SQL编写规范
  4. java.rmi.server.port_java.rmi.server.ExportException: internal error: ObjID already in use报错处理...
  5. Spring Boot 面试问题
  6. Spring笔记2——Spring中Bean的装配
  7. 8个流行的Python可视化工具包。
  8. bat执行php语句,php与bat之间调用的方法
  9. python数据类型_Python数据类型
  10. CentOS系统启动过程1-10 详细叙述
  11. 遗传算法原理及应用一(编码、适应度函数与选择算子)
  12. t分布 u分布 卡方分布_u分布(u分布和t分布)
  13. 【计算机组成原理——定点数原码一位乘法手算】
  14. 安装Realtek RTL8111/RTL8168网卡驱动详解(error~eth0:no such device)
  15. 田申:《个人信息安全规范》的理解与初探
  16. 压摆率//电源抑制比//共模抑制比//直流增益、带宽和相位裕度//静态功耗和直流工作点
  17. SWIFT国际清算体系的科普贴
  18. 手机连接电脑linux系统怎么样,电脑(Linux/Windows)使用SSH远程登录安卓(Android)手机实现无线传输和管理文件(图文详解)...
  19. Apache Tomcat JServ漏洞验证测试(CNVD-2020-10487 CVE-2020-1938)
  20. 瑞莎 Renesas Flash烧录

热门文章

  1. 多空线趋势策略-简易好用型
  2. 通过Windows批处理脚本批量修改DNS
  3. 手动配置网络设置静态IP地址
  4. python图形化编程 在线教程_使用Python Editor进行在线图形化编程
  5. 云原生背景下的运维价值思考与实践
  6. 近期数学杯赛汇总,哪个含金量高?
  7. 大数据薪水大概多少_大数据工程师工资待遇一般多少?高吗
  8. github出现HTTP request failed
  9. 云计算的认识和看法_我对云计算的认识
  10. Mars3d开发:飞行漫游