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月前
【蓝桥杯】 [蓝桥杯 2015 省 A] 饮料换购
蓝桥杯——2015年蓝桥杯省赛A组H题
47 1
【蓝桥杯】 [蓝桥杯 2015 省 A] 饮料换购
|
5月前
|
Python
春秋杯 snack入土为安的第二天
春秋杯 snack入土为安的第二天
30 0
|
8月前
力扣2591. 将钱分给最多的儿童
力扣2591. 将钱分给最多的儿童
LeetCode-2100 适合打劫银行的日子
LeetCode-2100 适合打劫银行的日子
|
人工智能
【寒假每日一题】AcWing 4700. 何以包邮?
目录 一、题目 1、原题链接 2、题目描述 二、解题报告 1、思路分析 2、时间复杂度 3、代码详解 三、知识风暴 0-1背包问题
144 0
520创意表白网站,让女友对你死心塌地。女神轻松领回家
520创意表白网站,让女友对你死心塌地。女神轻松领回家
356 0
蓝桥杯-快乐司机
话说现在当司机光有红心不行,还要多拉快跑。多拉不是超载,是要让所载货物价值最大,特别是在当前油价日新月异的时候。
119 0
|
人工智能 物联网 计算机视觉
国庆假去哪里玩?我推荐台州府城!
最近几天,同事见面,问的最多的就是:你国庆假去哪里玩儿? 如果你还没有什么计划的话,我有一个推荐:台州府城!
249 13
国庆假去哪里玩?我推荐台州府城!
LeetCode 训练场:322. 零钱兑换
LeetCode 训练场:322. 零钱兑换
97 0
|
弹性计算 云计算

热门文章

最新文章