517. 超级洗衣机

517. 超级洗衣机

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

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

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

示例 1:输入:machines = [1,0,5]
输出:3
解释:
第一步:    1     0 <-- 5    =>    1     1     4
第二步:    1 <-- 1 <-- 4    =>    2     1     3    
第三步:    2     1 <-- 3    =>    2     2     2   
示例 2:输入:machines = [0,3,0]
输出:2
解释:
第一步:    0 <-- 3     0    =>    1     2     0    
第二步:    1     2 --> 0    =>    1     1     1     
示例 3:输入:machines = [0,2,0]
输出:-1
解释:
不可能让所有三个洗衣机同时剩下相同数量的衣物。

解题思路

  1. 先计算出衣服的总数,判断衣服能否被平均分到每一台洗衣机里面
  2. 对于每一台洗衣机,我们可以计算出其与平均后衣服数量的差值,如果为负数,意味着需要抽调其他洗衣机的衣服过来,如果为正数,则是需要把当前衣服移除出去。我们将前面若干洗衣机分为一组,后面分为一组,维护一个变量sum,代表前一组洗衣机需要移动多少件衣服进入后一组才可以使得衣服的数量均等。因为每次只能移动一件衣服,因此如果要把前一组的移动到后一组来补充衣服的话,最少需要sum次移动,特殊情况是,当其他一个洗衣机衣服太多,不光要分去后一组,还要平摊到前一组的前部分,至少需要machines[i]-tar次移动

代码

class Solution {public int findMinMoves(int[] machines) {int n=machines.length,sum=0;for(int m:machines)sum+=m;if(sum%n!=0) return -1;int tar=sum/n,pre=0,res=0;for(int i=0;i<n;i++){machines[i]-=tar;pre+=machines[i];res=Math.max(res,Math.max(Math.abs(pre),machines[i]));} return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/390026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

netflix的准实验面临的主要挑战

重点 (Top highlight)Kamer Toker-Yildiz, Colin McFarland, Julia GlickKAMER Toker-耶尔德兹 &#xff0c; 科林麦克法兰 &#xff0c; Julia格里克 At Netflix, when we can’t run A/B experiments we run quasi experiments! We run quasi experiments with various obje…

网站漏洞检测针对区块链网站安全分析

2019独角兽企业重金招聘Python工程师标准>>> 目前移动互联网中&#xff0c;区块链的网站越来越多&#xff0c;在区块链安全上&#xff0c;很多都存在着网站漏洞&#xff0c;区块链的充值&#xff0c;会员账号的存储性XSS窃取漏洞&#xff0c;账号安全&#xff0c;等…

223. 矩形面积

223. 矩形面积 给你 二维 平面上两个 由直线构成的 矩形&#xff0c;请你计算并返回两个矩形覆盖的总面积。 每个矩形由其 左下 顶点和 右上 顶点坐标表示&#xff1a; 第一个矩形由其左下顶点 (ax1, ay1) 和右上顶点 (ax2, ay2) 定义。 第二个矩形由其左下顶点 (bx1, by1) …

微观计量经济学_微观经济学与数据科学

微观计量经济学什么是经济学和微观经济学&#xff1f; (What are Economics and Microeconomics?) Economics is a social science concerned with the production, distribution, and consumption of goods and services. It studies how individuals, businesses, governmen…

NPM 重新回炉

官方教程传送门( 英文 ) 本文主要是官方文章的精炼,适合想了解一些常用操作的同学们 NPM 是 基于node的一个包管理工具 , 安装node环境时会自带安装NPM. NPM版本管理 查看现有版本 npm -v 安装最新的稳定版本 npm install npmlatest -g 安装最新的测试版本 npm install npmn…

1436. 旅行终点站

1436. 旅行终点站 给你一份旅游线路图&#xff0c;该线路图中的旅行线路用数组 paths 表示&#xff0c;其中 paths[i] [cityAi, cityBi] 表示该线路将会从 cityAi 直接前往 cityBi 。请你找出这次旅行的终点站&#xff0c;即没有任何可以通往其他城市的线路的城市。 题目数据…

如何使用fio模拟线上环境

线上表现 这里我想通过fio来模拟线上的IO场景&#xff0c;那么如何模拟呢&#xff1f; 首先使用iostat看线上某个盘的 使用情况&#xff0c;这里我们需要关注的是 avgrq-sz, avgrq-qz. #iostat -dx 1 1000 /dev/sdk Device: rrqm/s wrqm/s r/s w/s rkB/s …

熊猫数据集_熊猫迈向数据科学的第二部分

熊猫数据集If you haven’t read the first article then it is advised that you go through that before continuing with this article. You can find that article here. So far we have learned how to access data in different ways. Now we will learn how to analyze …

Python基础综合练习

Pycharm开发环境设置与熟悉。 练习基本输入输出&#xff1a; print(你好,{}..format(name)) print(sys.argv) 库的使用方法&#xff1a; import ... from ... import ... 条件语句&#xff1a; if (abs(pos()))<1: break 循环语句&#xff1a; for i in range(5): while Tru…

POJ 3608 旋转卡壳

思路&#xff1a; 旋转卡壳应用 注意点&边 边&边 点&点 三种情况 //By SiriusRen #include <cmath> #include <cstdio> #include <algorithm> using namespace std; const double eps1e-5; const int N10050; typedef double db; int n,m; str…

405. 数字转换为十六进制数

405. 数字转换为十六进制数 给定一个整数&#xff0c;编写一个算法将这个数转换为十六进制数。对于负整数&#xff0c;我们通常使用 补码运算 方法。 注意: 十六进制中所有字母(a-f)都必须是小写。 十六进制字符串中不能包含多余的前导零。如果要转化的数为0&#xff0c;那么…

为什么我要重新开始数据科学

I’m feeling stuck.我感觉卡住了。 In my current work and in the content I create (videos and blog posts), I feel like I’ve begun to stall out. Most of the consumers of my content are at the start of their data science journey. The longer I’m in the fiel…

蓝牙协议 HFP,HSP,A2DP,A2DP_CT,A2DP_TG,AVRCP,OPP,PBAP,SPP,FTP,TP,DTMF,DUN,SDP

简介&#xff1a; HSP&#xff08;手机规格&#xff09;– 提供手机&#xff08;移动电话&#xff09;与耳机之间通信所需的基本功能。 HFP&#xff08;免提规格&#xff09;– 在 HSP 的基础上增加了某些扩展功能&#xff0c;原来只用于从固定车载免提装置来控制移动电话。 A2…

482. 密钥格式化

482. 密钥格式化 有一个密钥字符串 S &#xff0c;只包含字母&#xff0c;数字以及 ‘-’&#xff08;破折号&#xff09;。其中&#xff0c; N 个 ‘-’ 将字符串分成了 N1 组。 给你一个数字 K&#xff0c;请你重新格式化字符串&#xff0c;使每个分组恰好包含 K 个字符。特…

安装mariadb、安装Apache

2019独角兽企业重金招聘Python工程师标准>>> 安装mariadb 安装mariadb的步骤与安装mysql的一样 下载二进制源码包 再用tar 解压&#xff0c;创建/data/mariadb目录和用户 初始化 编译启动脚本 启动 安装Apache Apache是软件基金会的名字&#xff0c;软件的名字叫htt…

数据科学的发展_数据科学的发展与发展

数据科学的发展There’s perhaps nothing that sets the 21st century apart from others more than the concept of data. Every interaction we have with a connected device creates a data record, and beams it back to some data store for tracking and analysis. Inte…

Polling 、Long Polling 和 WebSocket

最近在学习研究WebSocket,了解到Polling 和Long Polling,翻阅了一些博文&#xff0c;根据自己的理解&#xff0c;做个学习笔记 Polling &#xff08;轮询&#xff09;&#xff1a; 这种方式就是客户端定时向服务器发送http的Get请求&#xff0c;服务器收到请求后&#xff0c;就…

惯性张量的推理_选择合适的intel工作站处理器进行张量流推理和开发

惯性张量的推理With the increasing number of data scientists using TensorFlow, it might be a good time to discuss which workstation processor to choose from Intel’s lineup. You have several options to choose from:随着使用TensorFlow的数据科学家数量的增加&am…

MongoDB数据库查询性能提高40倍

MongoDB数据库查询性能提高40倍 大家在使用 MongoDB 的时候有没有碰到过性能问题呢&#xff1f;下面这篇文章主要给大家分享了MongoDB数据库查询性能提高40倍的经历&#xff0c;需要的朋友可以参考借鉴&#xff0c;下面来一起看看吧。 前言 数据库性能对软件整体性能有着至关重…

通过Ajax方式上传文件(input file),使用FormData进行Ajax请求

<script type"text/jscript">$(function () {$("#btn_uploadimg").click(function () {var fileObj document.getElementById("FileUpload").files[0]; // js 获取文件对象if (typeof (fileObj) "undefined" || fileObj.size …