求出1-13的整數中1出現的次數,並算出100-1300的整數中1出現的次數?為此他特別數了一下1~13中包含1的數字有1、10、11、12、13因此共出現6次,但是對於後面問題他就沒轍了。acmer希望你們幫幫他,並把問題更加普遍化,可以很快的求出任意非負整數區間中1出現的次數(從1 到 n 中1出現的次數)。
思路:遍歷n的每一位,從個位開始,直到最高位。
對於每一位,分別計算左(left)、中(mid)、右(right)對應的數, 例如 12306 對於十位而言,
左為123,中為十位上的數0,右為6(如果是個為,右為0,最高位則左為0)
對於中位a,如果a為0,則1的個數由高位決定: count = left * pow(10, mid-1)
如果a為1, 則1的個數由高位和低位共同決定 :count = left * pow(10, mid-1) + right + 1
如果a>1 , 則1的個數由高位決定: count = (left + 1)* pow(10, mid-1)
public class solution
return count;
}}
計算正整數1到N中出現的1的個數
題目 1到n中,出現的1的個數 假設1到某個數12x01,設百位上的數字出現1的次數,假設百位上的數字x 0,百位上出現1的情況由100 199,1100 1199,2100 2199 3100 3199,11100 11199,總共1200個,當前位的高位為12,有12 100。假設x 1,百位上...
統計從1到N的所有整數中出現1的個數
問題 給定乙個十進位制的正整數n,寫下從1開始到n的所有整數,然後數一下其中出現的所有 1 的個數。解 假設n abcde,這裡abcde分別是十進位制數n的各個數字上的數字。例如我們計算百位上出現1的次數,它將會受到三個因素的影響 百位上的數字,百位一下,百位以上的數字。對於2位數來說,個位數出現...
演算法題 陣列中出現1次的兩個數
題目 乙個整型陣列裡除了兩個數字之外,其他的數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 思路 1.乙個陣列中如果只有乙個單獨的數,其餘的都成對出現,求這個數,就將陣列中的每個數相異或就能得到單獨的數 2.乙個陣列中有兩個單獨的數,其餘的成對出現,...