【回溯-数字全排列&&dfs】leet 386. 字典序排数

给你一个整数 n ,按字典序返回范围 [1, n] 内所有整数。

你必须设计一个时间复杂度为 O(n) 且使用 O(1) 额外空间的算法。

示例 1:

输入:n = 13
输出:[1,10,11,12,13,2,3,4,5,6,7,8,9]

示例 2:

输入:n = 2
输出:[1,2]

提示:

  • 1 <= n <= 5 * 104

如果数字 【1-9】构成9颗树,每棵树的根分别是1-9,每棵树的每一层节点分别由父节点的值后面加上【0-9】构成,则题目要求打印9颗树,按照先序遍历的节点值。

    public List<Integer> lexicalOrder(int n) {
        List<Integer> ans = new ArrayList<>();
        for(int d=1;d<=9;d++){
            dfs(d,n,ans);
        }
        return ans;
    }

    public void dfs(int v,int n,List<Integer> list) {
        if(v>n){
            return;
        }
        list.add(v);  //先序遍历

        for(int d=0;d<10;d++){
            dfs(v*10+d,n,list);
        }
    }

算法笔试题解-回溯系列 文章被收录于专栏

算法笔试题解-回溯系列

全部评论

相关推荐

ResourceUtilization:我嘞个董事长
点赞 评论 收藏
分享
03-31 18:02
门头沟学院 Java
白日梦想家_等打包版:不要的哦佛给我
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务