输入数字 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:
vector<int> printNumbers(int n) {
vector<int> result;
for(int i=1;i<pow(10,n);i++)
result.push_back(i);
return result;
}
};
// 大数据时使用的全排列
class Solution {
public:
void printNumbers(int n,int index,string& str,vector<int> &rs) {
if (index == n) {
int num = atoi(str.c_str());
if (num != 0) rs.push_back(num);
return;
}
for (int i = 0;i < 10;i++) {
//每一位 从0到9依次排列
str[index] = i + '0';
printNumbers(n, index+1, str, rs);
}
}
vector<int> printNumbers(int n) {
vector<int> rs;
string str;
str.resize(n);
printNumbers(n, 0, str, rs);
return rs;
}
};
本文介绍了一种算法,用于打印从1到最大的n位十进制数。通过两种方法实现:一是简单遍历,适用于小数据;二是使用全排列,适合大数据场景。示例展示了当n=1时的输出结果。
260

被折叠的 条评论
为什么被折叠?



