Category : Easy
Problem
Given the array candies
and the integer extraCandies, where candies[i] represents the number of candies that the ith kid has.
For each kid check if there is a way to distribute extraCandies among the kids such that he or she can have the greatest number of candies among them. Notice that multiple kids can have the greatest number of candies.
https://leetcode.com/problems/kids-with-the-greatest-number-of-candies/
Examples
Example 1:
1 2 3 4 5 6 7 8 | Input: candies = [2,3,5,1,3], extraCandies = 3 Output: [true,true,true,false,true] Explanation: Kid 1 has 2 candies and if he or she receives all extra candies (3) will have 5 candies --- the greatest number of candies among the kids. Kid 2 has 3 candies and if he or she receives at least 2 extra candies will have the greatest number of candies among the kids. Kid 3 has 5 candies and this is already the greatest number of candies among the kids. Kid 4 has 1 candy and even if he or she receives all extra candies will only have 4 candies. Kid 5 has 3 candies and if he or she receives at least 2 extra candies will have the greatest number of candies among the kids. |
Example 2:
1 2 3 | Input: candies = [4,2,1,1,2], extraCandies = 1 Output: [true,false,false,false,false] Explanation: There is only 1 extra candy, therefore only kid 1 will have the greatest number of candies among the kids regardless of who takes the extra candy. |
Example 3:
1 2 | Input: candies = [12,1,12], extraCandies = 10 Output: [true,false,true] |
Constraints:
2 <= candies.length <= 100
1 <= candies[i] <= 100
1 <= extraCandies <= 50
Solution Approach
This problem is pretty straight forward. You just have to find that if we give extra candies to a child individually then we have to tell if they will have the greatest amount of candies or not.
We straightaway have the intuition that we have to find the child with the greatest amount of candies in the beginning and then we can compare that to all the children’s candies plus the extra candies. The advantage of finding the kid with the most candy is that we need not compare with other kid’s amount of candy. This will save a lot of execution time.
To find the kid with the most candy we can use array stream in Java. We can search one by one also throughout the array but this is one line implementation with the same complexity and it is prebuilt. After finding the maximum we just go through each child’s candy adding the extra candy and comparing it with the maximum and saving the result of that comparison in a boolean array. Then we just return that boolean array as the answer.
Solution code
1 2 3 4 5 6 7 8 9 10 | class Solution { public List<Boolean> kidsWithCandies(int[] candies, int extraCandies) { int maximum = Arrays.stream(candies).max().getAsInt(); List<Boolean> answer = new ArrayList<Boolean>(); for(int i=0; i<candies.length; i++){ answer.add(candies[i] + extraCandies >= maximum); } return answer; } } |
For more Leetcode explained solutions visit Leetcode Solutions.
If you like capture the flag challenges visit here.
Check out my socials below in the footer. Feel free to ask any doubts in the comment section or contact me via Contact page I will surely respond. Happy Leetcoding