Maximum Number of Balls in a Box - Maths - Easy - LeetCode
💻 coding

Maximum Number of Balls in a Box - Maths - Easy - LeetCode

2 min read 369 words
2 min read
ShareWhatsAppPost on X
  • 1The task involves distributing balls numbered from lowLimit to highLimit into boxes based on the sum of their digits.
  • 2The maximum number of balls in any box can be determined by counting how many balls fall into each box during the distribution process.
  • 3The algorithm has a time complexity of O(n) and a space complexity of O(n), making it efficient for the given constraints.

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The task involves distributing balls numbered from lowLimit to highLimit into boxes based on the sum of their digits."

Maximum Number of Balls in a Box - Maths - Easy - LeetCode

You are working in a ball factory where you have n balls numbered from lowLimit up to highLimit inclusive (i.e., n == highLimit - lowLimit + 1), and an infinite number of boxes numbered from 1 to infinity.

Your job at this factory is to put each ball in the box with a number equal to the sum of digits of the ball's number. For example, the ball number 321 will be put in the box number 3 + 2 + 1 = 6 and the ball number 10 will be put in the box number 1 + 0 = 1.

Given two integers lowLimit and highLimit, return the number of balls in the box with the most balls.

Example 1:

Input: lowLimit = 1, highLimit = 10 Output: 2 Explanation: Box Number: 1 2 3 4 5 6 7 8 9 10 11 ... Ball Count: 2 1 1 1 1 1 1 1 1 0 0 ... Box 1 has the most number of balls with 2 balls. Example 2:

Input: lowLimit = 5, highLimit = 15 Output: 2 Explanation: Box Number: 1 2 3 4 5 6 7 8 9 10 11 ... Ball Count: 1 1 1 1 2 2 1 1 1 0 0 ... Boxes 5 and 6 have the most number of balls with 2 balls in each. Example 3:

Input: lowLimit = 19, highLimit = 28 Output: 2 Explanation: Box Number: 1 2 3 4 5 6 7 8 9 10 11 12 ... Ball Count: 0 1 1 1 1 1 1 1 1 2 0 0 ... Box 10 has the most number of balls with 2 balls.

Constraints:

1 <= lowLimit <= highLimit <= 105

public class Solution {
 public int CountBalls(int lowLimit, int highLimit) {
 var map = new Dictionary<int,int>();
 int maxCount = 0; 
 int count = 0;
 for(int i=lowLimit; i<=highLimit;i++){
 var boxNum = GetBoxNum(i);
 if(map.TryGetValue(boxNum, out count)){
 count++;
 map[boxNum] = count;
 }
 else{
 count = 1;
 map.Add(boxNum, 1);
 } 
 
 if(count > maxCount){
 maxCount = count; 
 }
 }
 
 return maxCount;
 }
 
 private int GetBoxNum(int num){
 if(num<10){
 return num;
 }
 int sum = 0;
 while(num>0){
 sum+=num%10;
 num/=10;
 }
 return sum;
 }
}

Time Complexity: O(n)

Space Complexity: O(n)

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

sumitc91

Published on 13 February 2021 · 2 min read · 369 words

Part of AskGif Blog · coding

You might also like