千家信息网

LeetCode如何解决打印从1到最大的n位数问题

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,小编给大家分享一下LeetCode如何解决打印从1到最大的n位数问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!题目输入
千家信息网最后更新 2025年01月24日LeetCode如何解决打印从1到最大的n位数问题

小编给大家分享一下LeetCode如何解决打印从1到最大的n位数问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

题目

输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。

示例 1:
输入: n = 1输出: [1,2,3,4,5,6,7,8,9]
说明:
用返回一个整数列表来代替打印n 为正整数
代码
class Solution {    public int[] printNumbers(int n) {        int num = (int)Math.pow(10,n) - 1;        int[] res = new int[num];        for(int i = 0; i < num; i++){            res[i] = i+1;        }        return res;    }}

大数打印

class Solution {    int[] res;    int nine = 0, count = 0, start, n;    char[] num, loop = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};    public int[] printNumbers(int n) {        this.n = n;        res = new int[(int)Math.pow(10, n) - 1];        num = new char[n];        start = n - 1;        dfs(0);        return res;    }    void dfs(int x) {        if(x == n) {            String s = String.valueOf(num).substring(start);            if(!s.equals("0")) res[count++] = Integer.parseInt(s);            if(n - start == nine) start--;            return;        }        for(char i : loop) {            if(i == '9') nine++;            num[x] = i;            dfs(x + 1);        }        nine--;    }}

以上是"LeetCode如何解决打印从1到最大的n位数问题"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0