【LeetCode-386】字典序排数
问题
给定一个整数 n, 返回从 1 到 n 的字典顺序。
请尽可能的优化算法的时间复杂度和空间复杂度。 输入的数据 n 小于等于 5,000,000。
示例
输入: 13
输出: [1,10,11,12,13,2,3,4,5,6,7,8,9]
解答
class Solution {
public:
vector<int> lexicalOrder(int n) {
for (int i = 1; i < 10; i++)
dfs(n, i);
return res;
}
private:
vector<int> res;
void dfs(int n, int num) {
if (num <= n) res.push_back(num);
for (int i = 0; i < 10; i++) {
int cur = num * 10 + i;
if (cur > n) return;
dfs(n, cur);
}
}
};

浙公网安备 33010602011771号