輸入乙個整數 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希望你們幫幫他...