Skip to content

Latest commit

 

History

History
47 lines (39 loc) · 742 Bytes

17. 打印从1到最大的n位数.md

File metadata and controls

47 lines (39 loc) · 742 Bytes

解题思路

借助前面的二次幂,可以快速算出 10 的 n 次方的值,从而确定最大值

1. 模拟

func printNumbers(n int) []int {
    max := pow(n)
    ans := []int{}
    for i := 1; i < max; i++ {
        ans = append(ans, i)
    }
    return ans
}

func pow(n int) int {
    if n == 0 {
        return 1
    }
    if n == 1 {
        return 10
    }
    sum := pow(n/2)
    if n % 2 == 1 {
        return sum * sum * 10
    }
    return sum * sum
}

2. 使用库函数计算 max

func printNumbers(n int) []int {
    num := int(math.Pow10(n))
    var ans []int
    for i := 1; i < num; i++ {
        ans = append(ans, i)
    }
    return ans
}