0
点赞
收藏
分享

微信扫一扫

1~n 整数中 1 出现的次数(困难)

题目描述

示例1

示例2

做题思路

代码

class Solution {
    public int countDigitOne(int n) {
        int digit = 1, res = 0;//digit用来记录low的变化
        int high = n / 10, cur = n % 10, low = 0;//初始状态cur为个位数
        while(high != 0 || cur != 0) {
            if(cur == 0) res += high * digit;
            else if(cur == 1) res += high * digit + low + 1;
            else res += (high + 1) * digit;
            low += cur * digit;//low增加一位
            cur = high % 10;//当前数字变为高位数对10取余
            high /= 10;//high减少一位
            digit *= 10;//digit位数变化
        }
        return res;
    }
}

总结

写到这里也结束了,在文章最后放上一个小小的福利,以下为小编自己在学习过程中整理出的一个关于 java开发 的学习思路及方向。从事互联网开发,最主要的是要学好技术,而学习技术是一条慢长而艰苦的道路,不能靠一时激情,也不是熬几天几夜就能学好的,必须养成平时努力学习的习惯,更加需要准确的学习方向达到有效的学习效果。

由于内容较多就只放上一个大概的大纲,需要更及详细的学习思维导图的 点击我的Gitee获取。
还有 高级java全套视频教程 java进阶架构师 视频+资料+代码+面试题!

全方面的java进阶实践技术资料,并且还有技术大牛一起讨论交流解决问题。

举报

相关推荐

0 条评论