LeetCode517_超级洗衣机(C++)

【LintCode 题解】亚马逊面试算法题:超级洗衣机 题目描述 你有n台超级洗衣机。最初,每台洗衣机都有一些衣服或是空的。 对于每一次移动,您可以选择任意m台(1≤m≤n)洗衣机,并将每台洗衣机的一件衣服同时传递给相邻的洗衣机 给定一个整数数组表示每个洗衣机中从左到右的衣服数量,您应该找到最小移动次数,使得所有洗衣机中具有相同数量的衣服。如果无法执行此操作,请返回-1。 样例1 输入: [1,0,5] 输出: 3 解释: 第一次移... 阅读详情

 1、初始分析:设最优的解法中,第i台洗衣机需要递的次数是itime。则最少移动次数为所有itime中的最大值。

举个简单的栗子整体感受一下
比如4台洗衣机瞭衣服数为3 4 4 4 5 则每一台洗衣机需要递的次数都是1。
具体操作为5给4一件,4给3一件,3给2一件,2给1一件。总共一次操作但分析后可以发现,这步操作可以简化为5给1一件。
这样我们就得出一个结论:分析一台洗衣机时,只需要分析它左边的总情况和右边的总情况,而不用管每一边内部具体的细节。


我们先设定几个参数。衣服总数sum     洗衣机总台数 n        平均值av             

左边缺少的衣服数 A = av * i - LeftSum,右边缺少的衣服数 B = av * ( n - 1 - i ) - RightSum。(如果多则为负值)


2、对于第i台洗衣机来说,总共有五种情况
①左右都缺,都需要从i号洗衣机递给她们,因为每次只能递一件,所以itime为A+B
②左右都多了,说明它们都得给i号洗衣机递,因为两边可以同时递,所以递的次数取决于需要调整次数多的那一边,即itime=MAX (-A,-B)
③左右都不缺也不多,这个很简单,i不用动,itime = 0
④一边的多一边少,但是多的量比少的量多,说明此时i里的衣服少了,多的那一个既需要给i,又需要给i的另一边。无论给谁,都得经过i,所以递的次数为多的量,即itime = MAX (|A|,|B/)
⑤一边的多一边少,但是少的量比多的量多,说明此时i里的衣服多了,少的那一边可以从i里取,也可以从多的那一边取。无论从哪取,都得经过i,所以递的次数为少的量,即itime =
MAX ( |Al,|B|) 。
④和⑤导致的结果一样,可以合为一种情况。
用这种方法求出所有的itime,最大值即为最少移动次数。

附上咱写的C++代码作参考。

#define MAX(A,B) ((A)>(B))?(A):(B)
int findMinMoves(vector<int>& machines)
{
    int sum = 0;
    for (int e : machines)
    {
        sum += e;
    }
    if (sum%machines.size())
        return -1;
    int av = sum / machines.size();
    int i = 0;
    int iLeftSum = 0;
    int iRightSum = sum - machines[i];
    int ret = 0;
    while (i < machines.size())
    {
        //左边需要增加的量A
        int LeftLack = i*av - iLeftSum;
        //右边需要增加的量B
        int RightLack = (machines.size() - 1 - i)*av - iRightSum;
        //5种情况:1.左右都缺,都需要从i号洗衣机递给她们 A+B
        //        2.左右都多,都需要送给i号洗衣机,可以同时给,所以经过i号洗衣机的次数是A和B的较大值
        //        3.左右都不缺,i号洗衣机ret=0;
        //        4.一边缺,一边多,i号洗衣机多。i需要递的次数为需求多的一边的量
        //		  5.一边缺,一边多,i号洗衣机少,i需要递的次数为需要多的一边的量。
        if (LeftLack > 0 && RightLack > 0)
        {
            ret = MAX(ret, machines[i] - av);
        }
        else if (LeftLack < 0 && RightLack < 0)
        {
            ret = MAX(ret, MAX(-LeftLack, -RightLack));
        }
        else if (LeftLack + RightLack == 0)
        {
            ret = MAX(ret, 0);
        }
        else
        {
            ret = MAX(ret, MAX(abs(LeftLack), abs(RightLack)));
        }
        iLeftSum += machines[i];
        ++i;
        if (i<machines.size())
            iRightSum -= machines[i];
    }
    return ret;
}

【贪心 图论】517. 超级洗衣机|分数未知 假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。 在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。 给定一个整数数组 machines 代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣机中衣物的数量相等,则返回 -1 。 阅读详情

相关推荐

全自动洗衣机PROTUES仿真+源程序+完整报告

洗衣机PROTUES仿真+源程序+完整报告,我的大三下自己辛辛苦苦做的单片机大作业,电机驱动,12864显示,音乐提醒

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

LeetCode——517. 超级洗衣机[Super Washing Machines][困难]——分析及代码[C++]一、题目二、分析及代码1. 贪心(1)思路(2)代码(3)结果三、其他 一、题目 假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。 在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。 给定一个整数数组 machines 代表从左至右每台

江南土豆的博客 489

洗衣机模糊控制推理系统fis

洗衣机模糊控制推理系统fis,直接用MATLAB模糊推理工具箱打开调用。

Leetcode 517. 超级洗衣机(贪心法+管道传输水的净输出)

给假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。 在每一步操作中,你可以选择任意 m (1 <= m <= n) 台洗衣机,与此同时将每台洗衣机的一件衣服送到相邻的一台洗衣机。 给定一个整数数组 machines 代表从左至右每台洗衣机中的衣物数量,请给出能让所有洗衣机中剩下的衣物的数量相等的 最少的操作步数 。如果不能使每台洗衣机中衣物的数量相等,则返回 -1

Talk is cheap, show me the code! 483

Test1_单片机洗衣机_C++_洗衣机_洗衣机单片机_

模拟洗衣机洗衣模式切换,通过单片机切换洗衣模式,不建议下载

模糊控制,模糊控制全自动洗衣机怎么操作,C,C++

简单的模糊pid控制例程,搭建了模型,设计了模糊控制器,简单易懂

LeetCode 517 超级洗衣机 解法

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/super-washing-machines 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 题目描述: 假设有 n 台超级洗衣机放在同一排上。开始的时候,每台洗衣机内可能有一定量的衣服,也可能是空的。 在每一步操作中,你可以选择任意 m (1 ≤ m ≤ n) 台洗衣机,...

weixin_39350124的博客 904

洗衣机,洗衣机哪个牌子好,C,C++

基于51单片机控制洗衣机进行自动洗衣的程序。

算法练习笔记(十二)—— 超级洗衣机

https://leetcode.com/problems/super-washing-machines/#/description You have n super washing machines on a line. Initially, each washing machine has some dresses or is empty. For each move, you c

d921737171的博客 1402

STM32F103中GPIO_Remap1_CAN1与GPIO_Remap2_CAN1的配置差异与应用场景解析

本文深入解析了STM32F103中GPIO_Remap1_CAN1与GPIO_Remap2_CAN1的配置差异与应用场景。通过剖析AFIO_MAPR寄存器,明确了两者在引脚映射(PB8/PB9 vs PD0/PD1)和适用封装上的区别,并提供了详细的配置步骤、常见陷阱排查及基于项目需求的选型指南,帮助开发者高效完成CAN引脚重映射。

u6v7w8x的博客 394

基于因果推理的LLM去毒:精准定位注意力头实现高效干预

在大型语言模型(LLM)的部署与应用中,模型安全与可控性是核心挑战之一。传统方法如全参数微调成本高昂,且可能损害模型通用能力。本文聚焦于一种基于因果推理的精准干预技术,其原理在于利用因果发现算法定位Transformer模型中与“毒性”输出存在强因果关联的特定注意力头。该技术通过分析注意力头的激活模式与生成文本毒性分数之间的因果关系,识别出关键责任单元,而非依赖传统的相关性分析。其技术价值在于实现了轻量级、高可解释性的模型行为修正,能以极低的参数改动代价有效降低模型在敏感话题上的有害输出。在应用场景上,该方

weixin_32667439的博客 312

LeetCde_571、超级洗衣机

文章目录前言原题题目原题案例题目分析代码实现 前言 这几天忙着活动的事,我懒惰了学习,但是我不能一致懒下去鸭,好吧,前两日的题我做不出来,昨天也看到了12点20左右,实在事我爱莫能助,所以没有更新,今日的打卡,他来了。首先感谢大佬提醒我继续Fighting打卡,来啦来啦。老规矩,打卡界面。 大佬留言截图 小提示一句:我是从去年3月份左右开始关注大佬的,大佬的python相关讲解真的超级好,神经网络,Cnn算法这一类数据分析都又自己独特的见解,大家要是感兴趣可以关注一波鸭!(不是打广告,就是单纯小小崇拜

qq_43325476的博客 331

2025年普通人转向人工智能运维(AIOps)学习建议(附最新技术实践与资源)

AIOps不仅是技术的叠加,更是运维流程的重构。建议通过“学习-实践-反馈”循环,逐步从工具使用者成长为解决方案设计者。如需完整资源链接,可访问上述推荐的优快云博客及GitHub仓库。

资深全栈架构师,乐于在 优快云 分享技术见解,与大家携手共进,共攀技术巅峰! 3096

LeetCode //C - 517. Super Washing Machines

【代码】LeetCode //C - 517. Super Washing Machines。

Made in Code 865

一文带你完成ARMv8架构中的cache知识点

【摘要】 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处理器内核要复杂得多,其时钟速度可以快上几个数量级。但是,外部总线和内存设备的频率并没有扩大到同样的程度。有可能实现小块的片上SRAM,它可以以与内核相同的速度运行,但是与标准的DRAM块相比,这种RAM非常昂贵,因为后者的容量可以达到数千倍。在许多基于ARM处理器的系统中,访问外部存储器需要几十甚至几百个内核周期。 cache的技术背景 在最初开发ARM架构时,处理器的时钟速度和内存的访问速度大致相同。今天的处.

ABCCloud的博客 1853

S型速度曲线进阶:基于Sin²(x)的PLC平滑运动控制实践(以伺服/步进系统为例)

本文深入探讨了基于Sin²(x)的S型速度曲线在PLC平滑运动控制中的实践应用,特别针对伺服/步进系统。通过对比传统梯形曲线和七段S曲线,详细展示了Sin²(x)曲线在加速度连续性、计算效率和参数自适应性方面的优势,并结合博图平台的具体实现技巧和实战案例,为精密运动控制提供了优化方案。

weixin_28718793的博客 242

LeetCode 517. 超级洗衣机:贪心算法的极致应用(详细拆解+代码实现)

第 0 台:diff = 1-2 = -1,balance = -1 → max_steps = max(0,1,1) = 1;- 第 1 台:diff = 0-2 = -2,balance = -3 → max_steps = max(1,2,3) = 3;- 第 2 台:diff = 5-2 = 3,balance = 0 → max_steps = max(3,3,0) = 3;- 第 1 台:diff = 2,balance = 1 → max_steps = max(1,2,1) = 2;

Qyy0531的博客 444

carsim软件教学

第一步打开小锁(红色标注) 新手往往一看界面是灰的,界面内的各种模块打开不了,以为没激活成功 所有模块必须复制之后,进行编辑,不要直接进行修改(很重要) 2.空气动力学模型(红色标注) 这里面主要设定了簧上质量。整车的整备质量在下图模块中进行设定 空气动力学。主要涉及到空气阻力,在下面模块中进行设定,有个问题需要注意,他的空气阻力与汽车理论的空气阻力公式不一致,这一点需要注意 下面这会模块基本上用不到,涉及到一个声音和汽车的外观 下面这个模块主要涉及到发动机功率,传动比还有 tao,档位的传动比,发

weixin_43796045的博客 2550

[leetcode] 517. Super Washing Machines

Description 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 ...

Learning from the mistakes 255

2026年紫光同创数字IC笔试试卷带答案

FPGA基础知识与设计要点摘要 本文围绕FPGA与数字IC设计核心概念,通过单选题、波形分析题、多选题和简答题形式,系统梳理了以下关键知识点: FPGA基础架构 查找表(LUT)是实现组合逻辑的基本单元(题1) CLB包含LUT、触发器和进位链,后者加速算术运算(题6,10) 布局布线优化是减少关键路径延迟的核心方法(题7) 时序分析要点 建立时间(时钟沿前数据需稳定)与保持时间(时钟沿后需保持)的定义(题2,简答1) 亚稳态成因及两级同步器处理跨时钟域信号的方法(多选题1,波形题5) 特殊设计技术 异步复

Open 114

4、双足机器人mpc基础概念

机器人控制实际上不是连续的,是离散的,这就是控制信号的采样周期dt,一般每1ms对机器人发起一次控制信号。一般来说,dt越小,控制器的响应速度越快,但是由于预测的精度有限,如果控制时域过长,预测的误差会逐渐累积,导致控制器的性能下降。注意:1)在程序处理时,u的维度并不是由机器人的自由度确定的,是由其变量的个数及每个变量的空间维度确定,对于双足,采用力矩和力来控制,则u的维度是“2*2*3=12”。机器人实际运动过程中表现出来的状态x,x和xd是一致的,也包括运动速度ν、角速度ω、角度θ、位置p等。

1213

超级洗衣机:贪心算法的极致应用

每一步操作中,可选择任意 m(1 ≤ m ≤ n)台洗衣机,同时将每台选中的洗衣机的一件衣服送到相邻的一台洗衣机。此外,本题的思路还可延伸到二维网格的资源均衡问题,只需将一维的前缀和扩展为二维的前缀和矩阵,再结合单点资源限制即可求解。2. 整体转移的限制:前缀和的绝对值代表前后两部分之间的衣物转移总量,每一步只能转移一件,因此至少需要该绝对值对应的步数才能完成整体转移。1. 单台洗衣机的限制:若某台洗衣机有 k 件超额衣物,由于每一步只能向外转移一件,至少需要 k 步才能完成该洗衣机的转移。

XXYZ_z的博客 356

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

C语言 | Leetcode C语言题解之第517题超级洗衣机

C语言 | Leetcode C语言题解之第517题超级洗衣机

m0_59237910的博客 518

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Leetcode-517 超级洗衣机(贪心)

题解 算出平均值 如果除不尽 直接-1 然后每台机器减去平均值 正的表示需要给出去多少 负的需要给他多少 1、假设将机器分为A B组 A+B=0 A>0 则需要A放入B 反之B放入A 2、模拟过程中 三者取最值 machine[i] abs(sum) ans. machine[i]不能取绝对值 负数是可以从两边给的 而正数(要给出去的数量)是只能一次给一个 class Solution { public: int fin...

小铅笔 364

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Leetcode

1748. 唯一元素的和 1725. 可以形成最大正方形的矩形数目 2000. 反转单词前缀 1763. 最长的美好子字符串 1342. 将数字变成 0 的操作次数 2047. 句子中的有效单词数 1996. 游戏中弱角色的数量

yake1965 4657

历次周赛、专场竞赛、春秋赛题目场次及对应具体题目题号+链接汇总

Warm Up Contest: 386.字典序排数 387.字符串中的第一个唯一字符 388.文件的最长绝对路径 Weekly Contest 2: 389. 找不同 390. 消除游戏 391. 完美矩形 Weekly Contest 3: 392. 判断子序列 393. UTF-8 编码验证 394. 字符串解码 395. 至少有 K 个重复字符的最长子串 Weekly Contest 4: 396. 旋转函数 397. 整数替换 398. 随机数索引 399. 除法求值 Weekly Contest

zhuruihe2014的博客 5314
上一篇: C++入门基础知识
下一篇: C++ 类和对象(上)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值