第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go lang:從一組數(shù)字中搜索x位數(shù)字,為什么需要很長時(shí)間才能執(zhí)行?

Go lang:從一組數(shù)字中搜索x位數(shù)字,為什么需要很長時(shí)間才能執(zhí)行?

Go
回首憶惘然 2021-12-27 16:00:41
我試圖制作從一組數(shù)字中找到 x 位數(shù)字的小程序,例如:我想從1 - 1000000000 中找到第 89位數(shù)字。這是我的代碼:https : //play.golang.org/p/93yh_urX16package mainimport (    "fmt"    "strconv")var bucket stringfunc main() {    findDigits( 89, 1000000000 )}func findDigits( digits int, length int) {    for i := 1; i <= length; i++ {        bucket += strconv.Itoa(i)    }    fmt.Println( "The", digits, "th digit from 1", "-", length, "is :", string ( [] rune ( bucket )[digits - 1] ) )}有誰知道,我犯了什么錯(cuò)誤?我需要一些建議來改進(jìn)此代碼。
查看完整描述

1 回答

?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

你的程序非常非常低效。user1431317 的程序效率很低。


簡單地計(jì)算價(jià)值。它只需要幾納秒的 CPU 時(shí)間和一些內(nèi)存分配,即使是大到 9,223,372,036,854,775,807 的數(shù)字索引(95.6 納秒和我的計(jì)算機(jī)上的 2 次分配)。例如,


package main


import (

    "fmt"

    "math"

    "strconv"

)


// digit returns the ith digit from the sequence of

// concatenated non-negative integers.

// The sequence of digits is 01234567891011121314151617181920...

func digit(i int64) string {

    // There are 9 one digit positive integers, 90 two digit,

    // 900 three digit, and so on.

    if i <= 0 {

        return "0"

    }

    j := int64(1)

    w := 1

    for ; ; w++ {

        t := j + 9*int64(math.Pow10(w-1))*int64(w)

        if 0 > t || t > i {

            break

        }

        j = t

    }

    k := i - j

    n := k / int64(w)

    m := k % int64(w)

    d := strconv.FormatInt(int64(math.Pow10(w-1))+n, 10)[m]

    return string(d)

}


func main() {

    tests := []int64{

        0, 1, 2, 3, 4, 5, 6, 7, 8, 9,

        10, 11, 12, 13,

        88, 89,

        188, 189, 190, 191, 192,

        math.MaxInt32, math.MaxInt64,

    }

    for _, n := range tests {

        fmt.Println(n, digit(n))

    }

}

輸出:


0 0

1 1

2 2

3 3

4 4

5 5

6 6

7 7

8 8

9 9

10 1

11 0

12 1

13 1

88 4

89 9

188 9

189 9

190 1

191 0

192 0

2147483647 2

9223372036854775807 9


查看完整回答
反對(duì) 回復(fù) 2021-12-27
  • 1 回答
  • 0 關(guān)注
  • 158 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)