题解 | #整数中1出现的次数(从1到n整数中1出现的次数)#

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

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

	//eg:3140192  (注:看的别人题解的理解)
    //此题只需关注数中的每一位都是为1的情况,然后累加起来就行
    //记cur = 要算的某位位置 , cur左边记为a , cur右边记为b
    //位上的数分为0 1 大于1 三种情况
    //(1) cur = 0的情况,比如例子中千位的情况,
    //如果万位上为1,那么cur左边只能是 0~313 , 右边是0~592 a=314 b=192
    //那么此时 a*1000
    //(2) cur = 1的情况,比如例子中百位的情况
    //   又分为两种情况
    //   第一种情况:左边为 0~3139 ,右边是0~99
    //   第二种情况:右边为 3140 , 右边是0~92
    //   综上为: a*100+1*(b+1)
    //(3) cur>1 的情况,比如例子中十位的情况,
    // 如果十位是1 , 那么就为 0~31401 右边是0—9
    //   所以 (a+1)*10
    public int NumberOf1Between1AndN_Solution(int n) {
        int counts=0;
        for (int m = 1; m <=n; m=m*10) {
            int a=n/m, b=n%m;
            counts+=(a+8)/10*m+(a%10==1 ? b+1 :0); //a%10表示上一位是否为1,为0?后一位为几就加几:0
  
        }
        return counts;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-17 14:38
干个蛋,干不了一点!!!!我真服了,还没搞完,很急。&nbsp;今天ddl,活没干完直接通宵,刺激。食堂很好吃,感觉离职的时候会胖10斤。mt喜欢能直接干活的,没空指导我,很难受。每个人都是笑嘻嘻的,但是从他们聊天中都能感受到各种试探,我有点慌了大家真的nb,都能准时完成工作下班,我羡慕啊!!!!!每天好累,想离职了💔
牛客26106072...:能去字节实习说明你的能力挺被认可的,实习中的这种累更有利于个人职场成长,试着当熬夜打游戏一样熬一熬,实习的意义就是看自己的差距和适应能力,总比等到工作时各种不适应辞职要好得多吧?
投递字节跳动等公司8个岗位
点赞 评论 收藏
分享
07-15 14:14
门头沟学院 Java
7.10投递7.15感谢信
投递地平线等公司7个岗位
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务