算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 超级洗衣机,我们先来看题面:

https://leetcode-cn.com/problems/super-washing-machines/

You have n super washing machines on a line. Initially, each washing machine has some dresses or is empty.

For each move, you could choose any m (1 <= m <= n) washing machines, and pass one dress of each washing machine to one of its adjacent washing machines at the same time.

Given an integer array machines representing the number of dresses in each washing machine from left to right on the line, return the minimum number of moves to make all the washing machines have the same number of dresses. If it is not possible to do it, return -1.

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

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

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

示例

解题

https://www.cnblogs.com/ambition-hhn/p/12877423.html

这道题给出了初始每个洗衣机内的衣服,每一次操作可将任意个洗衣机内的一件衣服移到相邻的一台洗衣机内,问每台洗衣机内的衣服经过多次操作后是否可以相等,如果可以,那么最少操作步骤是多少。这道题用的方法很巧妙,时间复杂度只需要O(n),具体方法是首先计算出是否可以给每台洗衣机分配相等的衣服,如果可以就继续计算出每台洗衣机最终的衣服数量P,然后用当前数组减去P得出每台洗衣机需要的衣服或者多余的衣服,并且统计出多余衣服的最大值ans1(这里只统计多余的是因为一个洗衣机每次最多只能给出一件衣服,但是最多可以接收两件衣服,所以接收衣服的次数无法准确得出)。

然后从第一个洗衣机开始计算当前需要还是多余的衣服数,然后计算第二个,因为这里无论第一个洗衣机多余衣服还是需要衣服都需要经过第二个洗衣机,第三个洗衣机相对于第二个也是同理,把数组种第一个的值加在第二个上面就是第二个洗衣机需要或者多余的衣服数,统计每次处理后数组绝对值的最大值ans2,最终答案就是ans1和ans2中的最大值。

class Solution {
public:int findMinMoves(vector<int>& machines) {int sum=0,sz=machines.size();for(int i=0;i<sz;i++)sum+=machines[i];if(sum%sz!=0) return -1;int per=sum/sz;int ans=0;for(int i=0;i<sz;i++){machines[i]-=per;if(machines[i]>0) ans=max(ans,machines[i]);}for(int i=1;i<sz;i++){machines[i]+=machines[i-1];ans=max(ans,abs(machines[i]));}return ans;}
};

好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。

上期推文:

LeetCode1-500题汇总,希望对你有点帮助!

LeetCode刷题实战501:二叉搜索树中的众数

LeetCode刷题实战502:IPO

LeetCode刷题实战503:下一个更大元素 II

LeetCode刷题实战504:七进制数

LeetCode刷题实战505:迷宫II

LeetCode刷题实战506:相对名次

LeetCode刷题实战507:完美数

LeetCode刷题实战508:出现次数最多的子树元素和

LeetCode刷题实战509:斐波那契数

LeetCode刷题实战510:二叉搜索树中的中序后继 II

LeetCode刷题实战511:游戏玩法分析 I

LeetCode刷题实战512:游戏玩法分析 II

LeetCode刷题实战513:找树左下角的值

LeetCode刷题实战514:自由之路

​LeetCode刷题实战517:超级洗衣机相关推荐

  1. ​LeetCode刷题实战375:猜数字大小 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  2. ​LeetCode刷题实战314:二叉树的竖直遍历

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. ​LeetCode刷题实战603:连续空余座位

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  4. ​LeetCode刷题实战623:在二叉树中增加一行

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  5. ​LeetCode刷题实战371:两整数之和

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  6. ​LeetCode刷题实战362:敲击计数器

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. ​LeetCode刷题实战450:删除二叉搜索树中的节点

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. ​LeetCode刷题实战546:移除盒子

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. ​LeetCode刷题实战276:栅栏涂色

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. linux shell less 命令---转
  2. c语言中常见的变量,C语言中的变量详解
  3. 知乎神回复:普通程序员一天的工作生活是怎样的?网友实名羡慕!
  4. 20140120收藏夹
  5. eax, ebx, ecx, edx, esi, edi, ebp, esp 各寄存器作用
  6. 安装Nginx必要组件时解决 yum -y install pcre pcre-devel安装出错
  7. c语言注释换颜色,C语言实现注释转换
  8. python以追加方式打开文件 线程安全吗_多线程追加文件,不加锁,会出现什么情况 ?...
  9. 甲骨文中国确认裁员 900 余人;网易回应邮箱账号遭公开叫卖;我国网民达 8.29 亿 | 极客头条...
  10. android shell 获取当前正在运行的Activity
  11. 怎么配置mysql数据源_mysql怎么样配置ODBC数据源
  12. Jenkins自动化构建Gitee项目
  13. java saxreader_java解析XML文件---SAXReader
  14. 百度C语言面试题2017,百度C语言面试题
  15. 使用JS将PDF文档转成图片,一页文档对应一张图片,并支持将图片批量导出!
  16. 保姆级零基础 C 语言学习路线,万字总结!
  17. 网络安全入门基础须知
  18. 单细胞转录组实战01: CellRanger7定量
  19. IDEA如何修改背景图片
  20. win7字体大小怎么设置_怎么设置 win7系统excel2010定时保存和数据恢复的方案 -win7系统使用教程...

热门文章

  1. 三维实景建模及倾斜摄影建模解决方案,附应用案例
  2. TDOA的matlab仿真
  3. 51开发板上为什么会有多个晶振
  4. 先知——纪伯伦(3)
  5. 2022年十一届认证杯C题
  6. Android Thread之threadLoop方法
  7. C++ Reference: Standard C++ Library reference: C Library: cmath: hypot
  8. Java常用时间计算
  9. c语言实现数组中的数据逆序排列
  10. DL4J模型训练Word2Vec