1742. 盒子中小球的最大数量
思路:哈希+遍历+取数位
1~9可以对应盒子
那么10、11、12如何对应到1、2、3呢?
通过下面这个就可以得到啦。举例n=10,pos += 0 , n/=10 = 1, pos += 1%10 = 1, n/10 = 0结束循环,即pos = 1,即10映射到1啦。12、13、xx同理
for n != 0 {
pos += n%10
n /= 10
}
此时用map记录一下pos就可以了。map[pos]++。 每次循环可以取当前map的最大值,即ans = max(ans, map[pos])
func countBalls(lowLimit int, highLimit int) int {
has1 := make(map[int]int,0)
ans := 0
for i:=lowLimit;i<=highLimit;i++{
pos := 0
n := i
for n != 0 {
pos += n%10
n/=10
}
has1[pos]++
ans = max(ans, has1[pos])
}
return ans
}
func max(a, b int) int {
if a > b {
return a
}
return b
}