LeetCode 剑指 Offer 17. 打印从1到最大的n位数

题目描述

剑指 Offer 17. 打印从1到最大的n位数

image-20241107205047996

思路分析

解法一:直接生成(推荐)

核心思路

  • 最大 n 位数为 10^n - 1
  • 依次生成 1..10^n-1 即可。
  • n 较小时直接用整型处理。


复杂度分析

  • 时间复杂度:O(10^n),生成所有数字。
  • 空间复杂度:O(1),除结果外仅使用常数空间。
class Solution {
    public int[] printNumbers(int n) {
        if (n <= 0) {
            return new int[0];
        }

        int max = 1;
        for (int i = 0; i < n; i++) {
            max *= 10;
        }
        max -= 1;

        int[] res = new int[max];
        for (int i = 1; i <= max; i++) {
            res[i - 1] = i;
        }

        return res;
    }
}
func printNumbers(n int) []int {
	if n <= 0 {
		return []int{}
	}

	max := 1
	for i := 0; i < n; i++ {
		max *= 10
	}
	max -= 1

	res := make([]int, max)
	for i := 1; i <= max; i++ {
		res[i-1] = i
	}

	return res
}

相似题目

题目 难度 考察点
60. 排列序列 中等 数学
400. 第 N 位数字 中等 数学
1291. 顺次数 中等 枚举
66. 加一 简单 模拟
415. 字符串相加 简单 模拟
本文作者:
本文链接: https://hgnulb.github.io/blog/2025/45045222
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处!