领扣LintCode算法问题答案-1163. 分糖果
1163. 分糖果
描述
给定长度为偶数的整数数组,该数组中不同的数字代表不同种类的糖果, 每个数字表示一种糖果。 您需要将这些糖果平均分配给弟弟和妹妹。 返回妹妹可以获得的糖果种类的最大数量。
- 所给数组的长度范围为[2, 10,000],且为偶数。
- 所给数组中数字的范围为[-100,000, 100,000]。
样例 1:
输入: candies = [1,1,2,2,3,3]
输出: 3
解释:
有三种不同的糖果(1, 2 and 3), 每种糖果有两个。
最佳分法:妹妹拥有[1,2,3] ,弟弟也会拥有拥有[1,2,3]。
妹妹拥有3种不同的糖果。
题解
public class Solution {
/**
* @param candies: a list of integers
* @return: return a integer
*/
public int distributeCandies(int[] candies) {
// write your code here
Map<Integer, Integer> map = new HashMap<>();
for (int candy : candies) {
Integer c = map.get(candy);
if (c == null) {
c = 0;
}
c++;
map.put(candy, c);
}
int count = candies.length / 2;
return Math.min(map.size(), count);
}
}
鸣谢
非常感谢你愿意花时间阅读本文章,本人水平有限,如果有什么说的不对的地方,请指正。
欢迎各位留言讨论,希望小伙伴们都能每天进步一点点。