DEV Community

jihyun-j
jihyun-j

Posted on

[Algorithm] 1431. Kids With the Greatest Number of Candies

Description

There are n kids with candies. You are given an integer array candies, where each candies[i] represents the number of candies the ith kid has, and an integer extraCandies, denoting the number of extra candies that you have.

Return a boolean array result of length n, where result[i] is true if, after giving the ith kid all the extraCandies, they will have the greatest number of candies among all the kids, or false otherwise.

Note that multiple kids can have the greatest number of candies.

⭐️ Key Requirement

  • Each kid can receive all extraCandies at once, meaning we check each kid individually.

  • Compare with the maximum number of candies to see if the kid can have the most after receiving extraCandies.

  • Return a boolean array, where true means the kid has the greatest number of candies, and false means they do not.

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.

Enter fullscreen mode Exit fullscreen mode

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.
Enter fullscreen mode Exit fullscreen mode

Example 3:

Input: candies = [12,1,12], extraCandies = 10
Output: [true,false,true]
Enter fullscreen mode Exit fullscreen mode

Constraints:

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

📌 My Submission

/**
 * @param {number[]} candies
 * @param {number} extraCandies
 * @return {boolean[]}
 */
var kidsWithCandies = function(candies, extraCandies) {
    const max = Math.max(...candies)
    let result = []

    for(let i=0; i<candies.length; i++){
        if(candies[i]+extraCandies >= max){
            result.push(true)
        } else {
            result.push(false)
        }
    }
    return result
};
Enter fullscreen mode Exit fullscreen mode
  1. Create an empty array to store the results.
  2. Find the maximum number in the candies array to use as a reference for comparison.
  3. Loop through the candies array and check if candies[i] + extraCandies is greater than or equal to the maximum value.
  4. If candies[i] + extraCandies is greater than or equal to the maximum, push true to the result array; otherwise, push false.
  5. Return the result array.

Top comments (0)