《劍指offer》— JavaScript(31)整數(shù)中1出現(xiàn)的次數(shù)(從1到n整數(shù)中1出現(xiàn)的次數(shù))

整數(shù)中1出現(xiàn)的次數(shù)(從1到n整數(shù)中1出現(xiàn)的次數(shù))

題目描述

求出113的整數(shù)中1出現(xiàn)的次數(shù),并算出1001300的整數(shù)中1出現(xiàn)的次數(shù)?為此他特別數(shù)了一下1~13中包含1的數(shù)字有1员帮、10、11剑辫、12阱飘、13因此共出現(xiàn)6次,但是對(duì)于后面問(wèn)題他就沒(méi)轍了。ACMer希望你們幫幫他,并把問(wèn)題更加普遍化,可以很快的求出任意非負(fù)整數(shù)區(qū)間中1出現(xiàn)的次數(shù)速妖。


思路

  1. 設(shè)n=abcde高蜂,自右至左,從1開(kāi)始標(biāo)號(hào)罕容。
  2. 如果第i位上的數(shù)字為0备恤,則第i位可能出現(xiàn)1的次數(shù)由其高位決定稿饰,若沒(méi)有高位,則視為0露泊,此時(shí)第i位可能出現(xiàn)1的次數(shù)為:其高位數(shù)*10(i-1)喉镰,例如若c為0,則次數(shù)為ab*102;
  3. 如果第i位上的數(shù)字為1惭笑,則第i位上可能出現(xiàn)1的次數(shù)受其高位和低位影響侣姆,若沒(méi)有,則視為0沉噩,此時(shí)第i位可能出現(xiàn)1的次數(shù):其高位數(shù)*10(i-1)+(低位數(shù)+1)捺宗,例如若c為1,則次數(shù)為ab*102+(de+1);
  4. 如果第i位上的數(shù)字大于1川蒙,則第i位上可能出現(xiàn)1的次數(shù)受其高位影響蚜厉,若沒(méi)有,則視為0畜眨,此時(shí)第i位可能出現(xiàn)1的次數(shù):(其高位數(shù)+1)*10(i-1)昼牛,例如若c大于1,則次數(shù)為(ab+1)*102;

實(shí)現(xiàn)代碼

function NumberOf1Between1AndN_Solution(n) {
    if (n < 0) return 0;
    var high, low, cur, temp, i = 1;
    high = n;
    var count = 0;
    while (high !== 0) {
        high = parseInt(n / Math.pow(10, i)); // 第i位數(shù)的高位
        temp = n % Math.pow(10, i);
        cur = parseInt(temp / Math.pow(10, i - 1)); // 第i位數(shù)
        low = temp % Math.pow(10, i - 1); // 第i位數(shù)的低位
        if (cur === 1) {
            count += high * Math.pow(10, i - 1) + low + 1;
        } else if (cur < 1) {
            count += high * Math.pow(10, i - 1);
        } else {
            console.log(count, high);
            count += (high + 1) * Math.pow(10, i - 1);
        }
        i++;
    }
    return count;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末胶果,一起剝皮案震驚了整個(gè)濱河市匾嘱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌早抠,老刑警劉巖霎烙,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蕊连,居然都是意外死亡悬垃,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)甘苍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)尝蠕,“玉大人,你說(shuō)我怎么就攤上這事载庭】幢耍” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵囚聚,是天一觀的道長(zhǎng)靖榕。 經(jīng)常有香客問(wèn)我,道長(zhǎng)顽铸,這世上最難降的妖魔是什么茁计? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮谓松,結(jié)果婚禮上星压,老公的妹妹穿的比我還像新娘践剂。我一直安慰自己,他們只是感情好娜膘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布逊脯。 她就那樣靜靜地躺著,像睡著了一般劲绪。 火紅的嫁衣襯著肌膚如雪男窟。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天贾富,我揣著相機(jī)與錄音歉眷,去河邊找鬼。 笑死颤枪,一個(gè)胖子當(dāng)著我的面吹牛汗捡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播畏纲,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼扇住,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了盗胀?” 一聲冷哼從身側(cè)響起艘蹋,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎票灰,沒(méi)想到半個(gè)月后女阀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屑迂,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年浸策,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惹盼。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡庸汗,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出手报,到底是詐尸還是另有隱情蚯舱,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布掩蛤,位于F島的核電站晓淀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏盏档。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一燥爷、第九天 我趴在偏房一處隱蔽的房頂上張望蜈亩。 院中可真熱鬧懦窘,春花似錦、人聲如沸稚配。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)道川。三九已至午衰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間冒萄,已是汗流浹背臊岸。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留尊流,地道東北人帅戒。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像崖技,于是被迫代替她去往敵國(guó)和親逻住。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容