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

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

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

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

  • 所有的钱都必须被分配。
  • 每个儿童至少获得 1 美元。
  • 没有人获得 4 美元。

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

  • 思路:贪心

    • 局部最优:每个小孩至少给一块钱,然后尽可能给某些小孩8块;但是需要注意,不能有分到4块的,钱也不能有剩余
    • 全局最优:使尽可能多的小孩获得 恰好 8 美元
  • 实现

    java 复制代码
    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 ) \mathcal{O}(1) O(1)
      • 空间复杂度: O ( 1 ) \mathcal{O}(1) O(1)
相关推荐
月挽清风13 小时前
代码随想录第十五天
数据结构·算法·leetcode
TracyCoder12315 小时前
LeetCode Hot100(34/100)——98. 验证二叉搜索树
算法·leetcode
We་ct16 小时前
LeetCode 56. 合并区间:区间重叠问题的核心解法与代码解析
前端·算法·leetcode·typescript
努力学算法的蒟蒻19 小时前
day79(2.7)——leetcode面试经典150
算法·leetcode·职场和发展
2401_8414956419 小时前
【LeetCode刷题】二叉树的层序遍历
数据结构·python·算法·leetcode·二叉树··队列
2401_8414956420 小时前
【LeetCode刷题】二叉树的直径
数据结构·python·算法·leetcode·二叉树··递归
我是咸鱼不闲呀20 小时前
力扣Hot100系列19(Java)——[动态规划]总结(上)(爬楼梯,杨辉三角,打家劫舍,完全平方数,零钱兑换)
java·leetcode·动态规划
铉铉这波能秀21 小时前
LeetCode Hot100数据结构背景知识之列表(List)Python2026新版
数据结构·leetcode·list
仟濹21 小时前
算法打卡 day1 (2026-02-06 周四) | 算法: DFS | 1_卡码网98 可达路径 | 2_力扣797_所有可能的路径
算法·leetcode·深度优先
YuTaoShao1 天前
【LeetCode 每日一题】1653. 使字符串平衡的最少删除次数——(解法一)前后缀分解
算法·leetcode·职场和发展