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.
Example 1:
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.Code1:
public class Solution {
public int distributeCandies(int[] candies) {
int a = candies.length;
Arrays.sort(candies);
int count = 1;
for(int i = 0;i < (a-1); i++){
if(candies[i] != candies[i+1])count++;
}
return Math.min(count , a/2);
}
}Code2:
public class Solution {
public int distributeCandies(int[] candies) {
Set<Integer> cat = new HashSet<>();//尝试使用HashSet
for(int candy : candies){
cat.add(candy);
}
return cat.size() >= candies.length/2 ? candies.length/2 : cat.size(); //新接触的三目运算符
}
}
本文探讨了如何将不同种类的糖果平均分配给兄妹两人的问题,并提供了两种解决方案。通过使用排序和哈希集的方法来确定妹妹能获得的最大种类数。

222

被折叠的 条评论
为什么被折叠?



