劍指offer(31)1 n整數中1出現的次數

2022-03-10 09:53:26 字數 621 閱讀 9455

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

這題說實話挺難的,暴力解法比較簡單,主要是想到時間複雜度更好的解法很難。

第一種暴力解法,也就是逐個判斷。

第二種運用了根據位數來做,逐位求解,並且對於特殊情況做下判斷。

主要注意下每位0,1,>2三種情況。並且通過+8處理可以很好地把》2情況歸在一起。

具體可以檢視leetcode上的number of digit one的解答。

第一種:

function

numberof1between1andn_solution(n)

num=~~(num/10);

} }

return

ones;

}

第二種:

function

numberof1between1andn_solution(n)

return

count;

}

劍指offer(31)1到n中n出現的次數

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

劍指 Offer1 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 我們考慮計算每一位的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...