这道题目起名为分糖不知道合适不合适, Distribute Candies应该是这个意思吧.
如下:
# Given an integer array with even length, where different numbers in this array represent different # kinds of candies. Each number means one candy of the corresponding kind. You need to distribute # these candies equally in number to brother and sister. Return the maximum number of kinds of candies # the sister could gain. # Input: candies = [1,1,2,2,3,3] # Output: 3 # Explanation: # There are three different kinds of candies (1, 2 and 3), and two candies for each kind. # Optimal distribution: The sister has candies [1,2,3] and the brother has candies [1,2,3], too. # The sister has three different kinds of candies. # Input: candies = [1,1,2,3] # Output: 2 # Explanation: For example, the sister has candies [2,3] and the brother has candies [1,1]. # The sister has two different kinds of candies, the brother has only one kind of candies. # 如题:分糖, 列表长度为偶数,每一种数字代表一种糖果, 对两个人平均分即每个人拿到的糖果数量是一样的,输出是一个人最多能拿到 # 几种糖果.分两种情况: # 一 糖果的种类超过糖果数量的一半, 因为一个人只能拿到糖果数量的一半, 所以最大值为len(candies) / 2 # 二 糖果的种类不到糖果数量的一半, 一个人每个种类拿一个糖果还不到所有糖果的一半 class Solution(object): def distributionCandies(self, candies): b = list(set(candies)) if len(b) > len(candies) / 2: return int(len(candies) / 2) else: return len(b) # return min(len(candies) / 2, len(set(candies))) 大神写的 if __name__ == '__main__': nums = [1, 1, 2, 2, 3, 3] s = Solution() print(s.distributionCandies(nums))
注意,有一个地方表明是大神写的, 确实高,非常羡慕这样一行代码就解决问题的.