DFS
class Solution {
List<Integer> ans = new ArrayList<Integer>();
int target = 0;//目标
public List<Integer> lexicalOrder(int n) {
target = n;
for(int i = 1;i<=9;i++){
dfs(i);
}
return ans;
}
public boolean dfs(int num){
//int num = Integer.parseInt(s);
if(num > target)
return false;
ans.add(num);
for(int i=num*10;i<=(num*10+9);i++)
{
boolean flag = dfs(i);
if(flag == false)
break;
}
return true;
}
}
迭代
class Solution {
public List<Integer> lexicalOrder(int n) {
List<Integer> ans = new ArrayList<Integer>();
int num = 1;
while(ans.size() < n)
{
while(num <= n)
{
ans.add(num);
num *= 10;
}
while((num % 10 == 9) || num > n)
num = num/10;
num +=1;
}
return ans;
}
}