列表

详情


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) 。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: int distributeCandies(int n, int limit) { } };

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)

上一题