劍指Offer的學習筆記(C#篇)-- 整數中1出現的次數(從1到n整數中1出現的次數)

題目描述

求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?爲此他特別數了一下1~13中包含1的數字有一、十、十一、十二、13所以共出現6次,可是對於後面問題他就沒轍了。ACMer但願大家幫幫他,並把問題更加廣泛化,能夠很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。

一 . 複雜解法(時間複雜度O(nlogn))

        原諒我只會最垃圾的辦法,難受啊,馬飛!!這種方法的思路就是一次次的除10取餘數,餘數是1就+1,效率低的一筆。。spa

class Solution
{
    public int NumberOf1Between1AndN_Solution(int n)
    {
        // write code here
        int x = 0;
        int b;
        for(int i = 1;i<=n;i++)
        {
            b = i;
            while(b>0)
            {
                //有餘數是1的狀況,就++,而後從最大搞到個位;
                if(b%10 == 1)
                {
                    x++;
                }
                //這裏用了整數求除法沒有小數點的bug;即int 12/int 10 = 1;13,14....也是如此,
                 b=b/10;
            }
        }
        return x;
    }
}

        算了,邏輯性太差了,牛批的想法先不想了。累死人。。。code

相關文章
相關標籤/搜索