国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

劍指 Offer 44.!! 數(shù)字序列中某一位的數(shù)字

這篇具有很好參考價(jià)值的文章主要介紹了劍指 Offer 44.!! 數(shù)字序列中某一位的數(shù)字。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

參考資料
劍指 Offer 44. 數(shù)字序列中某一位的數(shù)字
中等
351
相關(guān)企業(yè)
數(shù)字以0123456789101112131415…的格式序列化到一個字符序列中。在這個序列中,第5位(從下標(biāo)0開始計(jì)數(shù))是5,第13位是1,第19位是4,等等。

請寫一個函數(shù),求任意第n位對應(yīng)的數(shù)字。

示例 1:

輸入:n = 3
輸出:3
示例 2:

輸入:n = 11
輸出:0

限制:

0 <= n < 2^31

思路:
其實(shí)并沒有什么特別的……就是數(shù)數(shù),邊數(shù)邊刪(見下面代碼的while循環(huán)),直到最后落在某個區(qū)間,這就能確定目標(biāo)所在的位置是 幾位數(shù)的群體(即退出while循環(huán)后的digit, 如果digit=2,那么說明落在10-99之間),
再在這個群體里定位是哪一個數(shù)字(見int num那一行。比如,27);
進(jìn)一步,定位是這個數(shù)字的哪一位(見最后的return語句。比如,第一位,即7)
注意:從0開始數(shù),也就是0就是第0位,1就是第1位。文章來源地址http://www.zghlxwxcb.cn/news/detail-615845.html

class Solution {
    public int findNthDigit(int n) {
        int digit=1;
        int count=9;// 
        int start=1;
        while(n>count){
            n-=count;
            digit++;
            start*=10;
            count = digit*start*9;//10-99, 100-999, 
        }
        int num = start+(n-1)/digit;
    
        return Long.toString(num).charAt((n-1)%digit)-'0';// !! 注意這里取出第((n-1)%digit)個字符之后,怎么將它轉(zhuǎn)化為整數(shù)再返回

    }

// 參考資料:下面是LeetCode,K神的代碼,可以看到大神把start,count這些增長比較快的數(shù)設(shè)置成Long型;注意最后將某個字符轉(zhuǎn)成數(shù)字的代碼;注意這代碼已經(jīng)將n=0的情況考慮在內(nèi),此時不進(jìn)入while循環(huán),(n-1)/digit=-1, so num=0.
     public int findNthDigit2(int n) {
        int digit = 1;
        long start = 1;
        long count = 9;
        while (n > count) { // 1.
            n -= count;
            digit += 1;
            start *= 10;
            count = digit * start * 9;
        }
        long num = start + (n - 1) / digit; // 2.
        return Long.toString(num).charAt((n - 1) % digit) - '0'; // 3.
    }


}

到了這里,關(guān)于劍指 Offer 44.!! 數(shù)字序列中某一位的數(shù)字的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 劍指offer12 矩陣中的路徑 13 機(jī)器人的運(yùn)動范圍 34.二叉樹中和為某一值得路徑

    劍指offer12 矩陣中的路徑 13 機(jī)器人的運(yùn)動范圍 34.二叉樹中和為某一值得路徑

    //寫的有點(diǎn)問題,暫時想不到怎么改,先放著,通過用例71/83 卡住的是abcd 但是改了又有問題 無語 看了 答案 都寫不對 在類成員里面定義了row和col 就不要重復(fù)定義了 不然不知道為什么就開始發(fā)瘋 先貼出蠢貨寫出來的東西 審題也審不明白 機(jī)器人只能上下左右走 不能一行一行

    2024年02月15日
    瀏覽(24)
  • 【劍指offer】數(shù)組中重復(fù)的數(shù)字

    【劍指offer】數(shù)組中重復(fù)的數(shù)字

    ??專欄內(nèi)容:力扣刷題 ?個人主頁:子夜的星的主頁 ??座右銘:前路未遠(yuǎn),步履不停 劍指offer:數(shù)組中重復(fù)的數(shù)字 在一個長度為 n 的數(shù)組里的所有數(shù)字都在 0 0 0 到 n ? 1 n-1 n ? 1 的范圍內(nèi)。數(shù)組中某些數(shù)字是重復(fù)的,但不知道有幾個數(shù)字重復(fù),也不知道每個數(shù)字重復(fù)了幾

    2024年01月20日
    瀏覽(23)
  • 【劍指 offer】旋轉(zhuǎn)數(shù)組的最小數(shù)字

    【劍指 offer】旋轉(zhuǎn)數(shù)組的最小數(shù)字

    ?個人主頁:bit me?? ?當(dāng)前專欄:算法訓(xùn)練營?? 核心考點(diǎn):數(shù)組理解,二分查找,臨界條件 描述: 有一個長度為 n 的非降序數(shù)組,比如[1,2,3,4,5],將它進(jìn)行旋轉(zhuǎn),即把一個數(shù)組最開始的若干個元素搬到數(shù)組的末尾,變成一個旋轉(zhuǎn)數(shù)組,比如變成了[3,4,5,1,2],或者[4,5,1,2,3]這

    2023年04月20日
    瀏覽(20)
  • 劍指 Offer 31. 棧的壓入、彈出序列 / LeetCode 946. 驗(yàn)證棧序列(棧模擬)

    鏈接:劍指 Offer 31. 棧的壓入、彈出序列;LeetCode 946. 驗(yàn)證棧序列 難度:中等 輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設(shè)壓入棧的 所有數(shù)字均不相等 。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序

    2024年02月16日
    瀏覽(20)
  • 【LeetCode-中等】劍指 Offer 31. 棧的壓入、彈出序列(詳解)

    輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對應(yīng)的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。 示例

    2024年02月13日
    瀏覽(13)
  • 劍指offer33.二叉搜索樹的后序遍歷序列

    劍指offer33.二叉搜索樹的后序遍歷序列

    ?我一開始的想法是:后序遍歷是左右根,那么第一個數(shù)小于第二個數(shù),第二個數(shù)大于第三個數(shù),然后從第三個數(shù)開始又循環(huán),顯然錯了,因?yàn)槲疫@種是理想情況,是一個滿二叉樹。正確的解法是: 后序遍歷是[[左子樹],[右子樹],[根節(jié)點(diǎn)]],左子樹中的所有值都小于根節(jié)點(diǎn),

    2024年02月16日
    瀏覽(20)
  • 劍指 Offer 03. 數(shù)組中重復(fù)的數(shù)字

    劍指 Offer 03. 數(shù)組中重復(fù)的數(shù)字 利用題目的限制條件: 所有數(shù)字都在 0~n-1 的范圍內(nèi) 通過交互讓數(shù)字和下標(biāo)一一對應(yīng),如果有多個數(shù)字對應(yīng)同一個下標(biāo),那就找到了答案。 另一種寫法

    2024年02月11日
    瀏覽(21)
  • 劍指offer03.數(shù)組中重復(fù)的數(shù)字

    劍指offer03.數(shù)組中重復(fù)的數(shù)字

    看到這道題的第一眼想到的是先給它排序,然后雙指針從左往右遍歷,寫了一個冒泡排序,但是我想到了應(yīng)該會超時,因?yàn)槊芭輹r間復(fù)雜度是n的平方,輸入大小時10000,肯定會超時,然后右又看了一下題目看到數(shù)字都是0-n-1,靈感一下子就來了,我先創(chuàng)建一個等大的自然數(shù)數(shù)

    2024年02月11日
    瀏覽(19)
  • 【劍指offer|1.數(shù)組中重復(fù)的數(shù)字】

    【劍指offer|1.數(shù)組中重復(fù)的數(shù)字】

    : 長度為n的數(shù)組nums中所有數(shù)字都在0~n-1范圍內(nèi) 返回任意一個重復(fù)的數(shù)字 總體時間復(fù)雜度和空間復(fù)雜度分析: 修改數(shù)組的方法: 因?yàn)橛衝個元素,每一個元素都在0~(n-1)范圍內(nèi),如果元素不重復(fù)的話, 對數(shù)組重排之后,下標(biāo)和元素值之間應(yīng)該是一一對應(yīng)的關(guān)系 但是因?yàn)?/p>

    2023年04月22日
    瀏覽(23)
  • 用 Go 劍指 Offer 31. 棧的壓入、彈出序列 (輔助棧)

    輸入兩個整數(shù)序列,第一個序列表示棧的壓入順序,請判斷第二個序列是否為該棧的彈出順序。假設(shè)壓入棧的所有數(shù)字均不相等。例如,序列 {1,2,3,4,5} 是某棧的壓棧序列,序列 {4,5,3,2,1} 是該壓棧序列對應(yīng)的一個彈出序列,但 {4,3,5,1,2} 就不可能是該壓棧序列的彈出序列。 示例

    2023年04月14日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包