Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1103. 分糖果 II #11

Open
yankewei opened this issue Mar 5, 2020 · 0 comments
Open

1103. 分糖果 II #11

yankewei opened this issue Mar 5, 2020 · 0 comments
Labels
数学 题目类型为数学 简单 题目难度为简单

Comments

@yankewei
Copy link
Owner

yankewei commented Mar 5, 2020

排排坐,分糖果。

我们买了一些糖果 candies,打算把它们分给排好队的 n = num_people 个小朋友。

给第一个小朋友 1 颗糖果,第二个小朋友 2 颗,依此类推,直到给最后一个小朋友 n 颗糖果。

然后,我们再回到队伍的起点,给第一个小朋友 n + 1 颗糖果,第二个小朋友 n + 2 颗,依此类推,直到给最后一个小朋友 2 * n 颗糖果。

重复上述过程(每次都比上一次多给出一颗糖果,当到达队伍终点后再次从队伍起点开始),直到我们分完所有的糖果。注意,就算我们手中的剩下糖果数不够(不比前一次发出的糖果多),这些糖果也会全部发给当前的小朋友。

返回一个长度为 num_people、元素之和为 candies 的数组,以表示糖果的最终分发情况(即 ans[i] 表示第 i 个小朋友分到的糖果数)。

示例 1:

输入:candies = 7, num_people = 4
输出:[1,2,3,1]
解释:
第一次,ans[0] += 1,数组变为 [1,0,0,0]。
第二次,ans[1] += 2,数组变为 [1,2,0,0]。
第三次,ans[2] += 3,数组变为 [1,2,3,0]。
第四次,ans[3] += 1(因为此时只剩下 1 颗糖果),最终数组变为 [1,2,3,1]。

示例 2:

输入:candies = 10, num_people = 3
输出:[5,2,3]
解释:
第一次,ans[0] += 1,数组变为 [1,0,0]。
第二次,ans[1] += 2,数组变为 [1,2,0]。
第三次,ans[2] += 3,数组变为 [1,2,3]。
第四次,ans[0] += 4,最终数组变为 [5,2,3]。

提示:

1 <= candies <= 10^9
1 <= num_people <= 1000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/distribute-candies-to-people

解法

最简单的就是一直分,直到分完为止

func distributeCandies(candies int, num_people int) []int {
    var ret []int
    ans := make([]int, num_people)
    i := 0
    for candies > 0 {
        var minus int
        if len(ret) == 0 {
            minus = 1
        } else {
            minus = ret[len(ret) - 1] + 1 
            if candies < minus {
                minus = candies
            }
        }
        ret = append(ret, minus)
        candies -= minus
        ans[i%num_people] = ans[i%num_people] + minus
        i++
    }
    return ans
}
@yankewei yankewei added 数学 题目类型为数学 简单 题目难度为简单 labels Mar 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
数学 题目类型为数学 简单 题目难度为简单
Projects
None yet
Development

No branches or pull requests

1 participant