class Solution {
public:
int distMoney(int money, int children) {
}
};
6323. 将钱分给最多的儿童
给你一个整数 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
原站题解
javascript 解法, 执行用时: 96 ms, 内存消耗: 45 MB, 提交时间: 2023-09-22 07:41:21
/** * @param {number} money * @param {number} children * @return {number} */ var distMoney = function(money, children) { if (money < children) { return -1; } money -= children let cnt = Math.min(Math.floor(money / 7), children); money -= cnt * 7; children -= cnt; if ((children == 0 && money > 0) || (children == 1 && money == 3)) { cnt -= 1; } return cnt; };
golang 解法, 执行用时: 4 ms, 内存消耗: 3 MB, 提交时间: 2023-09-22 07:40:57
func distMoney(money int, children int) int { if money < children { return -1 } money -= children cnt := min(money / 7, children) money -= cnt * 7 children -= cnt if (children == 0 && money > 0) || (children == 1 && money == 3) { cnt -= 1 } return cnt } func min(x int, y int) int { if x > y { return y } return x }
cpp 解法, 执行用时: 4 ms, 内存消耗: 5.7 MB, 提交时间: 2023-03-19 21:52:30
class Solution { public: int distMoney(int money, int children) { if(money<children) return -1; if(money>8*children) return children-1; if(money==8*children-4) return children-2; return (money-children)/7; } };
golang 解法, 执行用时: 0 ms, 内存消耗: 3 MB, 提交时间: 2023-03-19 21:51:53
func distMoney(money, children int) int { money -= children // 每人至少 1 美元 if money < 0 { return -1 } ans := min(money/7, children) // 初步分配,让尽量多的人分到 8 美元 money -= ans * 7 children -= ans if children == 0 && money > 0 || // 必须找一个前面分了 8 美元的人,分完剩余的钱 children == 1 && money == 3 { // 不能有人恰好分到 4 美元 ans-- } return ans } func min(a, b int) int { if a > b { return b }; return a }
java 解法, 执行用时: 2 ms, 内存消耗: 40.6 MB, 提交时间: 2023-03-19 21:51:34
class Solution { public int distMoney(int money, int children) { money -= children; // 每人至少 1 美元 if (money < 0) return -1; int ans = Math.min(money / 7, children); // 初步分配,让尽量多的人分到 8 美元 money -= ans * 7; children -= ans; if (children == 0 && money > 0 || // 必须找一个前面分了 8 美元的人,分完剩余的钱 children == 1 && money == 3) // 不能有人恰好分到 4 美元 --ans; return ans; } }
python3 解法, 执行用时: 40 ms, 内存消耗: 14.9 MB, 提交时间: 2023-03-19 21:51:21
class Solution: def distMoney(self, money: int, children: int) -> int: money -= children # 每人至少 1 美元 if money < 0: return -1 ans = min(money // 7, children) # 初步分配,让尽量多的人分到 8 美元 money -= ans * 7 children -= ans # children == 0 and money:必须找一个前面分了 8 美元的人,分配完剩余的钱 # children == 1 and money == 3:不能有人恰好分到 4 美元 if children == 0 and money or \ children == 1 and money == 3: ans -= 1 return ans