Leetcode 2591. 将钱分给最多的儿童

简介: Leetcode 2591. 将钱分给最多的儿童

2591. 将钱分给最多的儿童


给你一个整数 money ,表示你总共有的钱数(单位为美元)和另一个整数 children ,表示你要将钱分配给多少个儿童。


你需要按照如下规则分配:


所有的钱都必须被分配。

每个儿童至少获得 1 美元。

没有人获得 4 美元。

请你按照上述规则分配金钱,并返回 最多 有多少个儿童获得 恰好 8 美元。如果没有任何分配方案,返回 -1 。


示例 1:


输入:money = 20, children = 3

输出:1

解释:

最多获得 8 美元的儿童数为 1 。一种分配方案为:

- 给第一个儿童分配 8 美元。

- 给第二个儿童分配 9 美元。

- 给第三个儿童分配 3 美元。

没有分配方案能让获得 8 美元的儿童数超过 1 。

示例 2:


输入:money = 16, children = 2

输出:2

解释:每个儿童都可以获得 8 美元

提示:

1 <= money <= 200

2 <= children <= 30


思路:


这是一道简单题通过率却很低

33ca991f97f94144967b0737406b6b76.png

主要是讨论各种情况。

例如:钱的数目小于儿童就返回-1

       给每个儿童分一美元,剩下的钱小于等与7返回 0

       给每个儿童分···· 具体看代码


代码


class Solution {
public:
    int distMoney(int money, int children) {      
         if (money < children) {
            return -1;
        }        
        money = money - children;
        int num = money / 7;       
        if (num >= children) {                  //如果剩下的钱够给每个儿童分配7美元还有剩余
        if (money % 7 > 0 || money / 7 > children) {//为满足每一元都要分配把多余的钱分给一人
                return children - 1;
            }
            else {
                return children;
            }
        }       
        if (money - num * 7 == 3) {      //如果分给另一个儿童的钱是三美元且其余儿童都分配了七美元结果减一
            if (num + 1 == children) {
                return num - 1;
            }
        }       
        return num;
    }
};


官方题解


class Solution {
public:
    int distMoney(int money, int children) {
        if (money < children) {
            return -1;
        }
        money -= children;
        int cnt = min(money / 7, children);
        money -= cnt * 7;
        children -= cnt;
        if ((children == 0 && money > 0) || (children == 1 && money == 3)) {
            cnt--;
        }
        return cnt;
    }
};
目录
相关文章
|
6月前
力扣2591. 将钱分给最多的儿童
力扣2591. 将钱分给最多的儿童
LeetCode-2100 适合打劫银行的日子
LeetCode-2100 适合打劫银行的日子
|
机器学习/深度学习 安全 测试技术
【刷题日记】2100. 适合打劫银行的日子
本次刷题日记的第 2 篇,力扣题为:2100. 适合打劫银行的日子 ,中等
107 0
|
算法 程序员
【红海游戏】第 281 场力扣周赛复盘
【红海游戏】第 281 场力扣周赛复盘
【红海游戏】第 281 场力扣周赛复盘
暑假打工赚了数十亿的3岁小孩,要上云啦!
今年暑假,相信很多同学都去刷了《哪吒之魔童降世》,这是一部注定载入中国动画电影史的作品。哪吒也成为有史以来最“吸金”的三岁小孩:以46.79亿元的成绩成为中国影史票房亚军。
7243 0
|
监控 安全 计算机视觉
2017年终总结——你送什么最好的礼物给自己?
版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢。 https://blog.csdn.net/testcs_dn/article/details/78955789 ...
982 0