前言
持续更新了
正文
问题来源
本问题来自leetcode上的386题。
问题描述
给定一个整数 n, 返回从 1 到 n 的字典顺序。
示例 1:
输入:n =13
输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]
分析:
var res []int
func lexicalOrder(n int) []int {
res = make([]int, 0, n)
for i := 1; i < 10; i++ {
dfs(n, i)
}
return res
}
func dfs(n, i int) {
if i > n {
return
}
res = append(res, i)
for j := 0; j < 10; j++ {
dfs(n, i*10+j)
}
}
func lexicalOrder(n int) []int {
res := make([]int, n)
cur := 1
for i := 0; i < n; i++ {
res[i] = cur
if cur*10 <= n {
cur *= 10
} else {
if cur == n {
cur /= 10
}
cur++
for cur%10 == 0 {
cur /= 10
}
}
}
return res
}
总结:
勤思考。
结语
不管怎么样好好加油。