leetcode386字典序排数

leetcode 386 Lexicographical Numbers

Posted by BY on August 17, 2020

前言

持续更新了

正文

问题来源

本问题来自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
}

总结:

勤思考。

结语

不管怎么样好好加油。