Leetcode 517. 超级洗衣机
本文最后更新于205 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com

1.题目基本信息

1.1.题目描述

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

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

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

1.2.题目地址

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

2.解题方法

2.1.解题思路

贪心

2.2.解题步骤

第一步,判断是否有解。根据总和是否能被n整除

第二步,构建维护变量。使用sum2维护sum(machines[i] for i in range(j))-avg*j;结果变量result=max(max(abs(sum2_i),machines[i]-avg) for i in range(n))

3.解题代码

python代码

class Solution:
    def findMinMoves(self, machines: List[int]) -> int:
        # 思路:贪心
        # 第一步,判断是否有解。根据总和是否能被n整除
        n = len(machines)
        sum1 = sum(machines)
        if sum1 % n != 0:
            return -1
        avg = sum1 // n
        # 第二步,构建维护变量。使用sum2维护sum(machines[i] for i in range(j))-avg*j;结果变量result=max(max(abs(sum2_i),machines[i]-avg) for i in range(n))
        sum2 = 0
        result = 0
        for i in range(n):
            sum2 += machines[i] - avg
            result = max(result, abs(sum2), machines[i] - avg)
        return result

c++代码

class Solution {
public:
    int findMinMoves(vector<int>& machines) {
        int n = machines.size();
        int sum1 = 0;
        for (int i = 0; i < n; i++) {
            sum1 += machines[i];
        }
        if (sum1 % n != 0) {
            return -1;
        }
        int avg = sum1 / n;
        int result = 0;
        int sum2 = 0;
        int a;
        for (int i = 0; i < n; i++) {
            a = machines[i] - avg;
            sum2 += a;
            result = max(result, max(abs(sum2), a));
        }
        return result;
    }
};

4.执行结果

觉得有帮助可以投喂下博主哦~感谢!

作者:geek007

转载请注明文章地址及作者哦~
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇