class Solution {
public:
int distributeCandies(int n, int limit) {
}
};
2928. 给小朋友们分糖果 I
给你两个正整数 n
和 limit
。
请你将 n
颗糖果分给 3
位小朋友,确保没有任何小朋友得到超过 limit
颗糖果,请你返回满足此条件下的 总方案数 。
示例 1:
输入:n = 5, limit = 2 输出:3 解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。
示例 2:
输入:n = 3, limit = 3 输出:10 解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。
提示:
1 <= n <= 50
1 <= limit <= 50
原站题解
rust 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2024-06-01 23:22:47
impl Solution { pub fn distribute_candies(n: i32, limit: i32) -> i32 { let c2 = |n| if n > 1 { n * (n - 1) / 2 } else { 0 }; c2(n + 2) - 3 * c2(n - limit + 1) + 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1) } }
javascript 解法, 执行用时: 61 ms, 内存消耗: 49.7 MB, 提交时间: 2024-06-01 23:22:29
/** * @param {number} n * @param {number} limit * @return {number} */ function c2(n) { return n > 1 ? n * (n - 1) / 2 : 0; } var distributeCandies = function(n, limit) { return c2(n + 2) - 3 * c2(n - limit + 1) + 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1); };
golang 解法, 执行用时: 0 ms, 内存消耗: 2.1 MB, 提交时间: 2023-11-13 20:38:37
func c2(n int) int { if n < 2 { return 0 } return n * (n - 1) / 2 } func distributeCandies(n int, limit int) int { return c2(n+2) - 3*c2(n-limit+1) + 3*c2(n-2*limit) - c2(n-3*limit-1) }
cpp 解法, 执行用时: 0 ms, 内存消耗: 6.1 MB, 提交时间: 2023-11-13 20:38:24
class Solution { int c2(int n) { return n > 1 ? n * (n - 1) / 2 : 0; } public: int distributeCandies(int n, int limit) { return c2(n + 2) - 3 * c2(n - limit + 1) + 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1); } };
java 解法, 执行用时: 0 ms, 内存消耗: 38.5 MB, 提交时间: 2023-11-13 20:38:12
class Solution { public int distributeCandies(int n, int limit) { return c2(n + 2) - 3 * c2(n - limit + 1) + 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1); } private int c2(int n) { return n > 1 ? n * (n - 1) / 2 : 0; } }
python3 解法, 执行用时: 48 ms, 内存消耗: 15.9 MB, 提交时间: 2023-11-13 20:37:56
def c2(n: int) -> int: return n * (n - 1) // 2 if n > 1 else 0 class Solution: # 0-1容斥原理 def distributeCandies(self, n: int, limit: int) -> int: return c2(n + 2) - 3 * c2(n - limit + 1) + 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1)