美文网首页
leetcode-1103-分糖果

leetcode-1103-分糖果

作者: 爱因斯没有坦 | 来源:发表于2020-03-05 11:06 被阅读0次

1103. 分糖果 II

image.png
image.png

方法1--直接遍历

思想:首先定义一个动态数组,把其中元素全部赋0。然后就是循环了,如果循环到最后一个数组元素,那么我们把下标再变为第一个数组元素下标,这样就可以一直循环下去了,。最后,我们再把仅剩下的少量没分完的糖果分给循环结束后那个数组元素就行了。

class Solution:
    def distributeCandies(self, candies: int, num_people: int) -> List[int]:
        alist = [0]*num_people
        count = 1
        while candies>0:
            for i in range(num_people):
                if candies > count:
                    alist[i] += count
                    candies -= count
                    count += 1
                else:
                    alist[i] += candies
                    candies = 0
                    break
        return alist

方法2--代码精进

这个i%num_people就很棒,随着i的增长,i对num_people进行取余数返回的数会一直是相应小朋友的正确下标

class Solution:
    def distributeCandies(self, candies: int, num_people: int) -> List[int]:
        # 给小朋友们每人发个碗,用于装糖
        kids = [0] * num_people
        # 初始化第一轮
        i = 0

        # 只要糖还有,咱就继续发
        while candies > 0:
            # 这个i%num_people就很棒,随着i的增长,i对num_people进行取余数
            # 返回的数会一直是相应小朋友的正确下标
            # 用+=进行累加每一轮的新发的糖果
            # min的作用是,如果有一天糖不够了,就把那些最后剩余的糖给最后那个孩子
            kids[i % num_people] += min(i + 1, candies)
            
            # 手中糖的数量要记得减去每次发糖的数量
            candies -= i - 1
            # 这个小朋友发完了,下一位
            i += 1
        return kids

时间复杂度O(N)O(N),一个简单的while循环
空间复杂度O(N)O(N),因为建立了一个长度为len(num_people)的kids列表

相关文章

  • leetcode-1103-分糖果

    1103. 分糖果 II 方法1--直接遍历 思想:首先定义一个动态数组,把其中元素全部赋0。然后就是循环了,如果...

  • 分糖果

    给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟...

  • 分糖果

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/distri...

  • NOIP训练营内部试题-分糖果

    NOIP训练营内部试题-分糖果 摘自:清北学堂NOIP训练营试题T2 题目:分糖果 分糖果 (candy) Tim...

  • 分糖果问题

    分糖果问题

  • 分糖果 II

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

  • 分糖果 II

    题目: 题目的理解: 从举例中明白根据n * (n + 1) / 2 然后和candies比较,获取一共可以分多少...

  • 分糖果问题

    描述 一群孩子做游戏,现在请你根据游戏得分来发糖果,要求如下: 每个孩子不管得分多少,起码分到一个糖果。 任意两个...

  • 1103-分糖果II

    分糖果II 题目 排排坐,分糖果。 我们买了一些糖果 candies,打算把它们分给排好队的 n = num_pe...

  • [笔试题]分糖果

    科大讯飞2018实习生笔试题:/** 分糖果:有一盒糖果要分成两份,但是每颗糖果质量不尽相同,为了分配公平,两份糖...

网友评论

      本文标题:leetcode-1103-分糖果

      本文链接:https://www.haomeiwen.com/subject/afetrhtx.html