面試題43 1 n整數中1出現的次數

2022-06-19 18:03:14 字數 592 閱讀 6332

輸入乙個整數 n ,求1~n這n個整數的十進位制表示中1出現的次數。

例如,輸入12,1~12這些整數中包含1 的數字有1、10、11和12,1一共出現了5次。

示例 1:

輸入:n = 12

輸出:5

示例 2:

輸入:n = 13

輸出:6

限制:1 <= n < 2^31

思路:遞迴。

將數字分為最高位和後幾位。

當數字由1開頭時,數字分為1和後面的n-1位數,分別計算其中『1』的個數。

如n=1234,high=1,pow=1000,last=234

f(n)=f(pow-1) + last + 1 + f(last);

當數字由2-9開頭時,一樣分為首位和其他n-1位數。

如n=3234,high=3,pow=1000,last=234

f(n)=pow + high*f(pow-1) + f(last);

**:

class

solution

private

int f(int

n )

else

}}

面試題43 1 n整數中1出現的次數

輸入乙個整數n,求1 n這n個整數的十進位制表示中1出現的次數。例如,輸入12,1 12這些整數中包含1的數字有1 10 11和12,1一共出現了5次。對於乙個數,每次對10取餘判斷最低位是不是1,就可以得到這個數中1的數量,從1遍歷到n,每個數都這麼做,就可以得到1的總數量了。看劍指offer上的...

面試題43 1 n整數中1出現的次數

求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數 從1 到 n 中1...

43 1 n 整數中 1 出現的次數

輸入乙個整數n,求1 n這n個整數的十進位制表示中1出現的次數。例如,輸入12,1 12這些整數中包含1的數字有1 10 11和12,1一共出現了5次。示例 1 輸入 n 12 輸出 5 示例 2 輸入 n 13 輸出 6 限制 1 n 2 31注意 本題與主站 233 題相同 最直觀的做法,就是累...