方法一:不考虑大数问题
class Solution {
public int[] printNumbers(int n) {
int num = (int) Math.pow(10, n) - 1;
int[] numbers = new int[num];
for (int i = 1; i <= num; i++) {
numbers[i - 1] = i;
}
return numbers;
}
}
方法二:考虑大数问题
package com.hc.ArrayAndString;
public class Offer17 {
StringBuilder str;
int nine = 0, n, start;
char[] num, loop = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
public String printNumbers(int n) {
this.n = n;
str = new StringBuilder();
num = new char[n];
start = n - 1;
dfs(0);
str.deleteCharAt(str.length() - 1);
return str.toString();
}
void dfs(int x) {
if (x == n) {
String s = String.valueOf(num).substring(start);
if(!s.equals("0"))
str.append(s + ",");
if(n - start == nine)
start--;
return;
}
for (char i : loop) {
if (i == '9')
nine++;
num[x] = i;
dfs(x + 1);
}
nine--;
}
}
class Print{
public static void main(String[] args) {
Offer17 offer17 = new Offer17();
System.out.println(offer17.printNumbers(2));
}
}