【每日一题Day334】LC2591将钱分给最多的儿童 | 贪心

简介: 【每日一题Day334】LC2591将钱分给最多的儿童 | 贪心

将钱分给最多的儿童【LC2591】

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

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

所有的钱都必须被分配。

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

没有人获得 4 美元。

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

  • 局部最优:每个小孩至少给一块钱,然后尽可能给某些小孩8块;但是需要注意,不能有分到4块的,钱也不能有剩余
  • 全局最优:使尽可能多的小孩获得 恰好8 美元
  • 实现
class Solution {
    public int distMoney(int money, int children) {
        // 首先满足每个小孩至少一块,然后尽可能给某些小孩8块,但是需要注意,不能有分到4块的,钱也不能有剩余
        if (money < children) return -1;
        else if (money > children * 8) return children - 1;
        else if (money == children * 8 - 4) return children - 2;
        return (money - children) / 7;
    }
}

复杂度

时间复杂度:O ( 1 )

空间复杂度:O ( 1 )

目录
相关文章
|
2月前
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
20 1
如果小张手上有n个空汽水瓶,最多可以换多少瓶汽水喝(详解)
|
2月前
【每日一题Day273】LC860柠檬水找零 | 贪心
【每日一题Day273】LC860柠檬水找零 | 贪心
22 0
【每日一题Day273】LC860柠檬水找零 | 贪心
|
2月前
力扣2591. 将钱分给最多的儿童
力扣2591. 将钱分给最多的儿童
|
2月前
洛谷P1204 or SSL-1088 USACO 1.2 挤牛奶
洛谷P1204 or SSL-1088 USACO 1.2 挤牛奶
|
2月前
【每日一题Day154】LC1626无矛盾的最佳球队 | 动态规划
【每日一题Day154】LC1626无矛盾的最佳球队 | 动态规划
25 0
|
2月前
【每日一题Day224】LC2517礼盒的最大甜蜜度 | 二分答案
【每日一题Day224】LC2517礼盒的最大甜蜜度 | 二分答案
19 0
|
2月前
【每日一题Day338】LC2582递枕头 | 模拟+数学
【每日一题Day338】LC2582递枕头 | 模拟+数学
16 0
|
2月前
|
安全
【每日一题Day137】LC1599经营摩天轮的最大利润 | 模拟+贪心
【每日一题Day137】LC1599经营摩天轮的最大利润 | 模拟+贪心
46 0
|
10月前
Leetcode 2591. 将钱分给最多的儿童
Leetcode 2591. 将钱分给最多的儿童
76 0
【每日一题Day1】LC1700.无法吃午餐的学生数量
给你两个整数数组 students 和 sandwiches ,其中 sandwiches[i] 是栈里面第 i 个三明治的类型(i = 0 是栈的顶部), students[j] 是初始队列里第 j 名学生对三明治的喜好(j = 0 是队列的最开始位置)。请你返回无法吃午餐的学生数量。
53 0