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

思路分析
解法一:直接生成(推荐)
核心思路:
- 最大 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. 字符串相加 | 简单 | 模拟 |
本博客所有文章除特别声明外,均采用
CC BY-NC-SA 4.0
许可协议,转载请注明出处!