首页 > 试题广场 >

打印从1到最大的n位数

[编程题]打印从1到最大的n位数
  • 热度指数:46978 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
1. 用返回一个整数列表来代替打印
2. n 为正整数,0 < n <= 5
示例1

输入

1

输出

[1,2,3,4,5,6,7,8,9]

不考虑大数:

class Solution {
    public int[] printNumbers(int n) {
        int max = (int)Math.pow(10,n);
        int[] ret = new int[max-1];
        for (int i=0;i<max-1;i++){
            ret[i]=i+1;
        }
        return ret;
    }
}

考虑大数,用String输出:

class Solution {
    StringBuilder s = new StringBuilder();
    char[] num;

    public String bigDigit(int n){
        //digit:当前生成digit位的数字;
        for (int digit = 1;digit<=n;digit++) {
            //第一位只生成1-9的数字,提出来;
            for (char first = '1'; first <= '9'; first++) {
                num = new char[digit];
                num[0]=first;
                dfs(1,digit);
            }
        }
        return s.append(s.length()).toString(); //最后看看字符串有多长?
    }
    void dfs(int index,int digit){
        if(index==digit){
            if(num[index-1]=='9') s.append(num).append("\n");
            else s.append(num).append(',');
            return;
        }
        for (char c = '0';c<='9';c++){
            num[index]=c;
            dfs(index+1,digit);
        }
    }
}
发表于 2021-11-15 00:37:31 回复(2)
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 最大位数
     * @return int整型vector
     */
    vector<int> printNumbers(int n) {
        // 时间复杂度O(10^n),空间复杂度O(1)
        int num = 9;
        while (--n) num = num * 10 + 9;
        vector<int> res(num, 0);
        for (int i = 0; i < num; ++i) res[i] = i + 1;
        return res;
    }
};

发表于 2022-08-14 17:08:55 回复(0)
上界就是n个9
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 最大位数
     * @return int整型一维数组
     */
    public int[] printNumbers (int n) {
        // write code here
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < n; i++) sb.append(9);
        int ub = Integer.parseInt(sb.toString());      // 上界
        int[] res = new int[ub];
        for(int i = 1; i <= ub; i++) res[i - 1] = i;
        return res;
    }
}

发表于 2021-11-20 21:59:32 回复(1)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 最大位数
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
static int arr[100000];
int* printNumbers(int n, int* returnSize ) {// write code here
    int m = 9;
    scanf("%d", &n);
    if(n > 0 && n <= 5)
    {
        for(int i = 1; i < n; i++)
        {
            m = 10 * m + 9;
        }
        for(int j = 1; j <= m; j++)
        {
            arr[j - 1] = j;
            *returnSize = j;
        }
        return arr;
    }
    else
    {
        return 0;
    }
}

发表于 2022-07-09 22:45:52 回复(0)
static int arr[100001];
int* printNumbers(int n, int* returnSize ) {
    int max = 1;
    for(int i = 0;i < n;i++)
    {
        max *= 10;
    }
    int i = 0;
    for(i = 1;i < max;i++)
    {
        arr[i-1] = i;
    }
    *returnSize = i-1;
    return arr;
}
returnSize是你返回的数组长度,需要你自己设定,编译器并不知道,不是你返回的数组
发表于 2022-01-22 10:48:08 回复(2)
class Solution:
    def printNumbers(self , n: int) -> List[int]:
        return [i for i in range(1,10**n)]

发表于 2021-12-23 22:12:32 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 最大位数
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
static int s[100000];
int* printNumbers(int n, int* returnSize ) {
    // write code
    int k=9;
    for(int i=1;i<n;i++)
        k=k*10+9;
    int j;
    for(j=0;j<k;j++)
        s[j]=j+1;
    *returnSize=j;
    return s;
}

发表于 2022-05-06 15:17:45 回复(0)
int* printNumbers(int n, int* returnSize ) {
    // write code here
    *returnSize = pow(10, n) - 1;
    int* nums = (int*)malloc(*returnSize * sizeof(int));
    for(int i = 0; i<*returnSize; i++)
    {
        nums[i] = i + 1;
    }
    return nums;
}

发表于 2022-04-26 16:17:32 回复(0)

pyton

class Solution:
    def printNumbers(self , n ):
        # write code here
        return list(range(1,10**n))


发表于 2021-11-07 22:31:11 回复(1)
#include<stdlib.h>
int* printNumbers(int n, int* returnSize ) {
    int i = n;
    *returnSize = pow(10,n)-1;
    int *arr = (int *)malloc(sizeof(int)*(*returnSize));
    for(int i = 0;i<*returnSize;i++)
    {
        arr[i]=i+1;
    }
    return arr;
}
编辑于 2024-02-08 15:02:50 回复(1)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param n int整型 最大位数
 * @return int整型一维数组
 * @return int* returnSize 返回数组行数
 */
int* printNumbers(int n, int* returnSize ) 
{
    int i=0;
    int N=9;
    for(i=1;i<n;i++)
    {
        N=N*10+9;
    }
    static int a[1000000]={0};//static 使数组成为静态局部变量
    for(i=0;i<N;i++)
    {
        a[i]=i+1;
    }
    *returnSize=i;//returnSize返回数组元素个数
    return a;
}


发表于 2022-12-27 17:08:04 回复(0)
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 最大位数
     * @return int整型一维数组
     */
    public static int[] printNumbers (int n) {
        // write code here
        int top = (int)Math.pow(10,n) - 1;//要输出的最大值
        int[] ans = new int[top];//创建top大小的数组
        for (int i = 0 ; i < top ; i++) {//数组从0开始 写入数组的值 比数组的index大1
            ans[i] = i+1;
        }
        return ans;
    }
}

发表于 2022-08-26 02:14:47 回复(0)

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param n int整型 最大位数
# @return int整型一维数组
#
class Solution:
    def printNumbers(self , n: int) -> List[int]:
        # write code here
        a = n%10
        b = pow(10,a)
        result = [i for i in range(b)]
        result = result[1:]
        return result


发表于 2022-03-14 09:30:50 回复(0)
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 最大位数
     * @return int整型一维数组
     */
    public int[] printNumbers (int n) {
        // write code here
        ArrayList<Integer> list = new ArrayList<>();
        int count = 1;
        while ((String.valueOf(count).length() <= n)){
            list.add(count);
            count++;
        }
        int[] res = new int[list.size()];
        for (int i = 0; i < list.size(); i++){
            res[i] = list.get(i);
        }
        return res;
    }
}

发表于 2021-12-16 15:12:12 回复(0)
https://www.nowcoder.com/share/jump/null
发表于 2026-01-01 14:58:32 回复(0)
class Solution:
def printNumbers(self , n: int) -> List[int]:
# write code here
i=1
l=[]
while len(str(i))<=n:
l.append(i)
i+=1
return l
发表于 2024-12-26 17:05:14 回复(0)
return [x for x in range(1,int("1"+n*"0"))]
发表于 2024-11-04 17:54:03 回复(0)
# python3
class Solution:
    def printNumbers(self , n: int) -> List[int]:
        # write code here
        res = []
        a = n % 10
        b = pow(10, a)      
        res = [i for i in range(1, b)]
        return res

发表于 2024-09-14 15:40:19 回复(0)
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型 最大位数
     * @return int整型一维数组
     */
    public int[] printNumbers (int n) {
        int len = (int)Math.pow(10, n) - 1;
                  int[] res = new int[len];
        for (int i = 1; i <= len; i++) {
            res[i - 1] = i;
        }
        return res;
    }
}

发表于 2024-08-20 21:50:41 回复(0)
这道题是想考察些什么呢?
发表于 2024-07-26 10:45:50 回复(0)