題目描述
求出1-13的整數中1出現的次數,並算出100-1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。
思路:
leetcode233
看到這一題的時候,我竟然首先開始找起了規律,但是也沒有總結出乙個比較好的規律
其實最容易想出的方法是暴力破解
思路1:暴破
遍歷1-n個元素,然後對每個數字進行1個數的查詢,進行累加
時間複雜度是o(nlogn),遍歷是o(n),對每個數字進行1的檢視是o(logn)
public
class
solution
return count;
}public
intchecknumof1
(int num)
return n1;
}}
但是這種解法在leetcode上是超時的
所以要進一步尋找更優的做法
思路2:
找數學規律
這樣的時間複雜度是o(log(以10為底)n)
class
solution
return count;
}}
劍指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希望你們幫幫他...