整数中1出现的次数(题解)

整数中1出现的次数(从1到n整数中1出现的次数)

http://www.nowcoder.com/questionTerminal/bd7f978302044eee894445e244c7eee6

题解:

核心思路:
链接:
从 1 至 10,在它们的个位数中,任意的 1 都出现了 1 次。
从 1 至 100,在它们的十位数中,任意的 1 都出现了 10 次。
从 1 至 1000,在它们的百位数中,任意的 1 都出现了 100 次。
抓住这个规律,就可做题,这是一版根据上面思路实现的,比较容易理解,可以参考

public class Solution {
    public int NumberOf1Between1AndN_Solution(int n) { 
        int ans = 0;
        for(int i = 1;i<=n;i *= 10){
            int m1 = n / (i* 10),m2 = n % (i* 10);
            int base = i;
            if(m2 >= 2 * base){
                ans += base;
            }
            else if(m2 < base){
                ans += 0;
            }
            else{
                ans += m2 - base + 1;
            }
            ans += m1 * base;
        }
        return ans;
    }
}
全部评论

相关推荐

Natrium_:这时间我以为飞机票
点赞 评论 收藏
分享
头像
09-21 09:55
门头沟学院 Java
想玩飞盘的我刷牛客:不给自己发个offer?
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务