給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。
示例:
輸入:13輸出:6解釋:數字 1 出現在以下數字中: 1, 10, 11, 12, 13 。假設我們要計算乙個六位數abcdef有多少個1,那麼我們要計算6個位置分別出現了多少次1,最後把6個位置的結果加和就是答案了。假如當前正在計算位置 c 出現了多少個1:_ _ c _ _ _,變數left為ab,變數right為def。先計算頭兩位小於ab的情況:為ab * 1000;然後計算當頭兩位為ab的情況:當c等於1時,為def + 1,當c大於1時,為1000。這樣位置c出現了多少個1就計算出來了。我們用同樣的方法計算其它位置的,最後將6個位置的結果加和就是答案了。
class solution
reverse(number.begin(), number.end());
for(int i = 0; i < number.size(); i++)
ans += left * t;
if(number[i] == 1)
ans += right + 1;
else if(number[i] > 1)
ans += t;
}return ans;
}};
LeetCode 233 數字 1 的個數
給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。輸入 13 輸出 6 解釋 數字 1 出現在以下數字中 1,10,11,12,13 劍指offer 第43題,解法見書。從 數字規律 著手,通過具體的例子一步步找出規律。c 語言版 class solution intmyso...
LeetCode第233題數字1的個數
給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13 輸出 6 解釋 數字 1 出現在以下數字中 1,10,11,12,13 0.暴力破解法,依次遍歷每個數中的1的個數,累加起來 演算法題如果是挨個寫到這題的話,這個想法在腦中也就是一閃而過 1.遞迴法 為了方便...
233 數字1的個數
給定乙個整數 n,計算所有小於等於 n 的非負整數中數字 1 出現的個數。示例 輸入 13輸出 6解釋 數字 1 出現在以下數字中 1,10,11,12,13 最開始想到的是暴力,但是暴力應該是過不了的。即是 把每乙個數字的裡1的個數都算出來再加起來就是答案 後來我改進了一下,但是還是超出時間和空間...