劍指 Offer1 n 整數中 1 出現的次數

2021-10-10 22:36:14 字數 948 閱讀 6948

輸入乙個整數 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的個數。即計算個十百千位。

cur是當前位,high是cur的高位,low是cur的低位,digit是當前位的因子,即10^i

注意我們迴圈退出的條件是 high 和 cur 都等於 0。因為都等於 0 就意味著 n 已經徹底遍歷完了。不然的話:

假如退出的條件只有 high 等於 0:那假如 n = 1024,然後此時 cur 在千位,則 cur = 1,high = 0,low = 024。如果此時退出迴圈,我們還沒來得及計算千位能出現的 1 的次數。

假如退出的條件只有 cur 等於 0:那假如 n = 1024,然後此時 cur 在百位,則 cur = 0,high = 1,low = 24。如果此時退出迴圈,我們還沒來得及計算百位和千位能出現的 1 的次數。

class

solution

return res;

}}

劍指offer 整數中1出現的次數

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

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

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

劍指Offer 整數中1出現的次數

時間限制 1秒 空間限制 32768k 熱度指數 226203 本題知識點 查詢數學 求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他...