Kids With the Greatest Number of Candies

Updated on 13 June, 2025
Kids With the Greatest Number of Candies header image

Problem Statement

In this scenario, you are provided with the number of candies different children have and an additional quantity of candies you can distribute freely among them. Specifically, you are given an array candies where each element candies[i] represents the number of candies the i-th child has. Alongside, an integer extraCandies indicates the total extra candies available for distribution. The objective is to determine for each child, if it’s possible for them to have the highest number of candies among all the children, should they receive all the extraCandies.

The result is reflected in a boolean array where each index i corresponds to a child. The value is true if giving all extraCandies to the i-th child results in him or her having the maximum candies, and false otherwise. It is important to note that multiple children might end up having an equal number of maximum candies.

Examples

Example 1

Input:

candies = [2,3,5,1,3], extraCandies = 3

Output:

[true,true,true,false,true]

Explanation:

If you give all extraCandies to:
- Kid 1, they will have 2 + 3 = 5 candies, which is the greatest among the kids.
- Kid 2, they will have 3 + 3 = 6 candies, which is the greatest among the kids.
- Kid 3, they will have 5 + 3 = 8 candies, which is the greatest among the kids.
- Kid 4, they will have 1 + 3 = 4 candies, which is not the greatest among the kids.
- Kid 5, they will have 3 + 3 = 6 candies, which is the greatest among the kids.

Example 2

Input:

candies = [4,2,1,1,2], extraCandies = 1

Output:

[true,false,false,false,false]

Explanation:

There is only 1 extra candy.
Kid 1 will always have the greatest number of candies, even if a different kid is given the extra candy.

Example 3

Input:

candies = [12,1,12], extraCandies = 10

Output:

[true,false,true]

Constraints

  • n == candies.length
  • 2 <= n <= 100
  • 1 <= candies[i] <= 100
  • 1 <= extraCandies <= 50

Approach and Intuition

Given our understanding of the problem, we can outline the approach as follows:

  1. First, identify the current highest number of candies any child has without any distribution of extra candies. This helps set a benchmark for comparison.
  2. Iterate through the candies array and for each child calculate the total number of candies they would have if they were given all the extraCandies.
  3. Compare this potential maximum for each child to the pre-determined original highest number of candies.
  4. If the total (current candies + extraCandies) for a child is greater than or equal to the highest number pre-determined, then for that child, return true in the corresponding index in the result array; otherwise, return false.
  • To illustrate with examples:
    • For a child with 3 candies and 3 extraCandies, if the highest candies any child has initially is 5, then the new total for this child would be 6. Since 6 is more than 5, the result would be true for this child.
    • Conversely, if a child has only 1 candy and the highest is 10, even with 3 extraCandies, they would only reach 4, making the result false.

This approach ensures that we can efficiently determine the possibilities for each child in a single pass through the list, after establishing the max reference point.

Solutions

  • C++
  • Java
  • Python
cpp
class Solution {
public:
    vector<bool> canHaveMostCandies(vector<int>& candies, int extra) {
        int maximumCandies = *max_element(candies.begin(), candies.end());
        vector<bool> output;
        for (int item : candies) {
            output.push_back(item + extra >= maximumCandies);
        }

        return output;
    }
};

The provided C++ solution determines which kids can have the greatest number of candies when given extra candies. You initialize by calculating the maximum number of candies any kid has using max_element. Then, iterate through each kid's candy count. For each kid, evaluate if adding the extra candies to their current count would equal or exceed the maximum candies. This check results in a Boolean value, indicating if the kid could potentially have the highest number of candies. All results are stored in a Boolean vector and returned.

  • Key components in the solution:
    • Retrieval of the maximum number of candies using *max_element.
    • Iteration over the candies array and evaluation against the maximum value, adjusted by the extra candies.
    • The storage of evaluation results in a vector of Boolean values.

This approach ensures that you effectively determine the potential for each kid to have the most candies, relative to others, after distribution of the extra candies.

java
class Solution {
    public List<Boolean> canBeMaxWithExtra(int[] candyCounts, int additionalCandies) {
        int highestCount = 0;
        for (int count : candyCounts) {
            highestCount = Math.max(count, highestCount);
        }
        List<Boolean> output = new ArrayList<>();
        for (int count : candyCounts) {
            output.add(count + additionalCandies >= highestCount);
        }

        return output;
    }
}

In the given Java program, we have a function named canBeMaxWithExtra that determines if each child can have the maximum candies when extra candies are distributed. The function achieves this by performing the following steps:

  1. Initialize a variable to store the maximum number of candies present initially (highestCount).
  2. Traverse the input array candyCounts to find the maximum count of candies any kid currently has.
  3. Create an ArrayList<Boolean> to store boolean values which represent whether each kid can have the greatest number of candies by adding the additionalCandies to their current count.
  4. Iterate through candyCounts again, adding the additionalCandies to each count and comparing it to highestCount. Update the output list with true if the sum is greater than or equal to highestCount, otherwise false.
  5. Return the Boolean list which will contain the result for each child.

This solution effectively checks if the addition of additionalCandies to what each child already has would make their total candies equal to or greater than the highest number of candies any child currently has.

python
class Solution(object):
    def childrenWithExtraCandies(self, candy_list, additionalCandies):
        # Determine the highest candy count any kid has initially
        highestCandyCount = max(candy_list)
        # Evaluate which kids can have the highest candy count after receiving extra candies
        outcomes = []
        for candy in candy_list:
            outcomes.append(candy + additionalCandies >= highestCandyCount)
        return outcomes

This program determines which kids can have the most candies if given extra candies, using Python 3. The function childrenWithExtraCandies takes two parameters: candy_list, an array where each element represents the number of candies each kid currently has, and additionalCandies, indicating the number of extra candies to distribute to each kid.

  • Extract the maximum number of candies any kid has using the max() function.
  • Iterate over candy_list, adding additionalCandies to each kid's current candy count.
  • Compare whether each kid's total candies, after adding the extra, meet or exceed the maximum candy count.
  • Store the result (True or False) into a list for each kid indicating if they can have the greatest number of candies.

Return a list of boolean values indicating for each child if they will have the most candies after the additional candies are given.

Comments

No comments yet.