233 數字 1 的個數

2021-09-24 10:17:03 字數 658 閱讀 6167

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。

示例:輸入: 13

輸出: 6 

解釋: 數字 1 出現在以下數字中: 1, 10, 11, 12, 13 。

思路:統計出每一的位上1出現的個數,累加起來就是1出現的總個數。

num = 31456

現在統計百位上1出現的次數。

將num分成兩部分(根據百位),a = 314,b=56。

此時a的個位是4(即num的百位是4),此時該為出現1的次數為:31*100次。

假設a的個位數是x,

當x > 1時,百位出現1的次數:(a / 10 + 1) * 100

當x = 1時,百位出現1的次數:(a / 10 ) * 100 + b + 1 (0~b)

當x = 0時,百位出現1的次數:(a / 10 ) * 100 

根據規律,可以分為兩類,一類x >= 2;一類0 <= x < 2,用乙個表示式寫出:

(a+8) / 10 * 100 ,再將x = 1的特殊情況寫入表示式:(a+8) / 10 * 100 + (a % 10 == 1 ) * (b + 1)

class solution 

return res;

}};

233 數字1的個數

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13輸出 6解釋 數字 1 出現在以下數字中 1,10,11,12,13 最開始想到的是暴力,但是暴力應該是過不了的。即是 把每乙個數字的裡1的個數都算出來再加起來就是答案 後來我改進了一下,但是還是超出時間和空間...

233 數字 1 的個數

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13 輸出 6 解釋 數字 1 出現在以下數字中 1,10,11,12,13 遞迴解決。分為首位為1和首位不為1兩種情況 1.首位為1,如12345。先考慮大於等於10000的 則10000 12345的首位1共貢...

233 數字 1 的個數 hard

給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13 輸出 6 解釋 數字 1 出現在以下數字中 1,10,11,12,13 分別計算在個十百千。位上1出現的次數 在某個位置上如果是0,那麼1出現的次數 它的高位x它的位數 如果某個位置上是1,那麼1出現的次數 ...