575. Distribute Candies
Description
Alice has n
candies, where the ith
candy is of type candyType[i]
. Alice noticed that she started to gain weight, so she visited a doctor.
The doctor advised Alice to only eat n / 2
of the candies she has (n
is always even). Alice likes her candies very much, and she wants to eat the maximum number of different types of candies while still following the doctor's advice.
Given the integer array candyType
of length n
, return the maximum number of different types of candies she can eat if she only eats n / 2
of them.
Constraints
n == candyType.length
2 <= n <= 104
n
is even.-105 <= candyType[i] <= 105
Approach
Links
GeeksforGeeks
ProgramCreek
Examples
Input: candyType = [1, 1, 2, 2, 3, 3]
Output: 3
Explanation: Alice can only eat 6 / 2 = 3 candies. Since there are only 3 types, she can eat one of each type.
Solutions
/**
* Time complexity : Adding an item into a Hash Set has an amortized
* time of O(1).Therefore, adding N items requires O(N) time.
* All of the other operations we use are O(1).
* Space complexity : The worst case for space complexity occurs when all
* N elements are unique. This will result in a Hash Set containing N elements.
*/
class Solution {
public int distributeCandies(int[] candyType) {
Set<Integer> uniqueCandies = new HashSet();
for(int candy: candyType) {
uniqueCandies.add(candy);
}
return Math.min(uniqueCandies.size(), candyType.length/2);
}
}
Follow up
Last updated
Was this helpful?