題目:求出1~13的整數中1出現的次數,並算出100~1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。
思路: 程式設計之美上給出的規律:
取第 i 位左邊(高位)的數字,乘以 10 i−1 ,得到基礎值 a 。
取第 i 位數字,計算修正值:
如果大於 x,則結果為 a+ 10 i−1 。
如果小於 x,則結果為 a 。
如果等 x,則取第 i 位右邊(低位)數字,設為 b ,最後結果為 a+b+1 。
相應的**非常簡單,效率也非常高,時間複雜度只有 o( log 10 n) 。
public int numberof1between1andn_solution(int n)
return total;
}
31 整數中1出現的次數
一 題目描述 求出任意非負整數區間中1出現的次數 從1 到 n 中1出現的次數 如1 13中包含1的數字有1 10 11 12 13因此共出現6次 二 思路分析 暴力解法,對1 13中的每個數k,從個位開始,逐位判斷是否是1 c 實現 class solution k k 10 遍歷數字的每一位 r...
31 整數中1出現的次數(從1到整數n)
題目描述 求出1 13的整數中1出現的次數,並算出100 1300的整數中1出現的次數?為此他特別數了一下1 13中包含1的數字有1 10 11 12 13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數。我的方法...
31 從 1 到 n 整數中 1 出現的次數
求出 1 13 的整數中1出現的次數,並算出 100 1300 的整數中1出現的次數?為此他特別數了一下 1 13 中包含1的數字有 1 10 11 12 13 因此共出現 6 次,但是對於後面問題他就沒轍了。acmer 希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中 1 出現...