分糖果

糖果(Distribute Candies)​​ ​题目描述​:将 n 个糖果分给 k 个孩子,每个孩子分到的糖果数形成一个严格递增的序列。若无法满足,返回 -1。 ​示例​: 输入:n = 7, k = 4 输出:[1,2,3,1](总和为7,且严格递增)

void distribute(const int n, const int k, std::vector<int>& vec)
{
    vec.clear();
    if(n <= 0 || k <= 0)
        return;
    const long long minSum = ((k + 1) * k)/2;
    if(n < minSum)
        return;
    
    for(int i = 0; i < k; i++)
    {
        vec.emplace_back(i+1);
    }
  
    int remain = n - minSum;
    vec[k-1] += remain;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务