这道题其实有一个提示了,就是时间复杂度为
func lexicalOrder(n int) []int {
res := make([]int, n)
num := 1
for i := range res {
res[i] = num
// 从1开始,乘10先加入结果,然后依次加入11、12...,所以我们每次要先判断一下num*10 <= n,之后每次num++,如果num%10 == 9 || num+1 > n,也就是到了19、29...要开始下一个字典序了或者是超出n的范围了,则num /= 10从新的字典序开始。
if num*10 <= n {
num *= 10
} else {
for num%10 == 9 || num+1 > n {
num /= 10
}
num++
}
}
return res
}