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

2021-10-01 23:54:02 字數 850 閱讀 1720

題目描述

求出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希望你們幫幫他...