双指针6行代码,对于每一个数求1的个数,然后加起来。对于每一个数来说求个位只需要mod10就好,然后将原数/10 替换 原数,再mod10求得十位,以此类推,可得各十百千。。。位。 然后循环--即可
public int NumberOf1Between1AndN_Solution(int n) {
int count=0;
for(int i=n;i>0;i--){
for(int j=i;j>0;j/=10){
if(j%10==1) count++;
}
}return count;


京公网安备 11010502036488号