• 整数中出现1的个数


    题目:求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。

    思路:暴力?。。。。leetCode上有一个神解答。。。

    暴力:

    public int countDigitOne(int n) {
            int res=0;
            for(int i=1;i<=n;i++){
                String temp=String.valueOf(i);
                for(int j=0;j<temp.length();j++){
                    if(temp.charAt(j)=='1')
                        res++;
                }
            }
            return res;
        }

    神解答:原文链接:https://discuss.leetcode.com/topic/18054/4-lines-o-log-n-c-java-python

    public int countDigitOne(int n) {
        int ones = 0;
        for (long m = 1; m <= n; m *= 10)
            ones += (n/m + 8) / 10 * m + (n/m % 10 == 1 ? n%m + 1 : 0);
        return ones;
    }
  • 相关阅读:
    我与solr(二)--导入mysql数据库
    Android 渐变效果
    希尔排序
    插入排序
    选择排序
    冒泡排序法
    QT仿QQ页面
    Colliding Mice
    QTablewidget通过代理实现限制输入
    QT绘制心形图案二
  • 原文地址:https://www.cnblogs.com/team42/p/6683646.html
Copyright © 2020-2023  润新知