# 575.分糖果
给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟弟和一个妹妹。返回妹妹可以获得的最大糖果的种类数。
输入: candies = [1,1,2,2,3,3]
输出: 3
解析: 一共有三种种类的糖果,每一种都有两个。
最优分配方案:妹妹获得[1,2,3],弟弟也获得[1,2,3]。这样使妹妹获得糖果的种类数最多。
输入: candies = [1,1,2,3]
输出: 2
解析: 妹妹获得糖果[2,3],弟弟获得糖果[1,1],妹妹有两种不同的糖果,弟弟只有一种。这样使得妹妹可以获得的糖果种类数最多。
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 答案
- 自己的答案
/**
* @param {number[]} candyType
* @return {number}
*/
var distributeCandies = function(candyType) {
let map = new Map()
let count=0,len=candyType.length,num=0
for(let candy of candyType) {
if(map.has(candy)) {
map.set(candy,map.get(candy) + 1)
} else {
map.set(candy,1)
}
}
let typeValue = map.values()
for(let value of typeValue) {
if(count === len / 2) {
break;
}
num++
count++
}
return num
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
- 别人的
/**
* @param {number[]} candies
* @return {number}
*/
var distributeCandies = function(candies) {
const cat = new Set(candies).size
return Math.min(cat, candies.length / 2)
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8