问题描述:
有n块糖,每块糖的种类用一个整数表示。现在只允许吃n/2(一半量)的糖果,求最多能吃到多少种糖果?
思路:
用set统计糖果的种类。若糖果种类数k>n/2,则能吃到n/2种糖果(即每块糖都不一样),若糖果种类数k<n/2,则只能吃到k种糖果
代码如下:
class Solution {
public int distributeCandies(int[] candyType) {
Set set=new HashSet<>();
int n=candyType.length;
for(int i=0; i<n; i++){
set.add(candyType[i]);
}
int numType=set.size();
return (numType>=n/2)? n/2: numType;
}
}
时间复杂度: O(n)