题目描述:
https://leetcode-cn.com/problems/maximum-number-of-balls-in-a-box/
Java代码:
class Solution {
public int countBalls(int l, int h) {
int[] cnt=new int[46];
for(int i=l;i<=h;i++){
int num=i,bitSum=0;
while(num!=0){
bitSum+=num%10;
num=num/10;
}
cnt[bitSum]++;
}
int ans=0;
for(int e:cnt)if(ans<e)ans=e;
return ans;
}
}
Java代码二:
class Solution {
public int countBalls(int l, int h) {
int[] cnt=new int[46],cache=new int[h+1];
for(int i=1;i<=h;i++)cache[i]=cache[i/10]+i%10;
for(int i=l;i<=h;i++)cnt[cache[i]]++;
int ans=0;
for(int e:cnt)if(ans<e)ans=e;
return ans;
}
}
Java代码三:
class Solution {
public int getBitSum(int n){
int bitSum=0;
while(n!=0){
bitSum+=n%10;
n/=10;
}
return bitSum;
}
public int countBalls(int l, int h) {
int[] cnt=new int[46];
int ans=0,bitSum=getBitSum(l);
for(int i=l;i<=h;i++){
if(i%10==0)bitSum=getBitSum(i);
cnt[bitSum++]++;
}
for(int e:cnt)if(ans<e)ans=e;
return ans;
}
}
class Solution {
public int getBitSum(int n){
int bitSum=0;
while(n!=0){
bitSum+=n%10;
n/=10;
}
return bitSum;
}
public int countBalls(int l, int h) {
int[] cnt=new int[46];
int ans=0,bitSum=getBitSum(l);
for(int i=l;i<=h;i++){
if(i%10==0){
int num=i/10;
bitSum=0;
while(num!=0){
bitSum+=num%10;
num/=10;
}
}
cnt[bitSum++]++;
}
for(int e:cnt)if(ans<e)ans=e;
return ans;
}
}