★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:http://www.javashuo.com/article/p-wmpzhraj-me.html
➤若是连接不是山青咏芝的博客园地址,则多是爬取做者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持做者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★html
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.git
Example 1:github
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.
Example 2:数组
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.
Note:微信
给定一个偶数长度的数组,其中不一样的数字表明着不一样种类的糖果,每个数字表明一个糖果。你须要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹能够得到的最大糖果的种类数。this
示例 1:spa
输入: candies = [1,1,2,2,3,3] 输出: 3 解析: 一共有三种种类的糖果,每一种都有两个。 最优分配方案:妹妹得到[1,2,3],弟弟也得到[1,2,3]。这样使妹妹得到糖果的种类数最多。
示例 2 :code
输入: candies = [1,1,2,3] 输出: 2 解析: 妹妹得到糖果[2,3],弟弟得到糖果[1,1],妹妹有两种不一样的糖果,弟弟只有一种。这样使得妹妹能够得到的糖果种类数最多。
注意:htm
380msblog
1 class Solution { 2 func distributeCandies(_ candies: [Int]) -> Int { 3 let cSet:Set<Int> = Set(candies) 4 return min(cSet.count,candies.count/2) 5 } 6 }
400ms
1 class Solution { 2 func distributeCandies(_ candies: [Int]) -> Int { 3 //Set存储相同类型的不一样值,没有定义的顺序。 4 var kind:Set<Int> = Set<Int>() 5 for i in candies 6 { 7 kind.insert(i) 8 } 9 return min(candies.count / 2, kind.count) 10 } 11 }
404ms
1 class Solution { 2 func distributeCandies(_ candies: [Int]) -> Int { 3 let dict = candies.reduce(into: [:]) { $0[$1, default: 0] += 1 } 4 return min(dict.keys.count, candies.count/2) 5 } 6 }
1552ms
1 class Solution { 2 func distributeCandies(_ candies: [Int]) -> Int { 3 var hash = Set<Int>() 4 5 for i in 0...candies.count - 1 { 6 if hash.count == (candies.count / 2) { 7 return candies.count / 2 8 } 9 hash.insert(candies[i]) 10 } 11 12 return hash.count 13 } 14 }