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