输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。
1. 用返回一个整数列表来代替打印
2. n 为正整数,0 < n <= 5
2. n 为正整数,0 < n <= 5
import java.util.*; public class Solution { public int[] printNumbers (int n) { StringBuilder sb=new StringBuilder(); for(int i=0;i<n;i++){ sb.append("9"); } int max=Integer.parseInt(sb.toString()); int[] arr=new int[max]; for(int i=0;i<max;i++){ arr[i]=i+1; } return arr; } }
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 最大位数 * @return int整型一维数组 */ public int[] printNumbers (int n) { // write code here int max = 1; for(int i = 1;i <= n;i++){ max = max * 10; } max = max - 1; int[] toArray = new int[max]; for(int j = 1;j <= max;j++){ toArray[j -1] = j; } return toArray; } }
public int[] printNumbers (int n) { int max=1; for(int i=1;i<=n;i++){ max = max * 10; } max=max-1; int []arr=new int[max]; for(int i=1;i<=max;i++){ arr[i-1]=i; } return arr; }
public int[] printNumbers (int n) { // write code here int len = (int) Math.pow(10,n); //不是10 ^ n 这种方式 int index = 1; int[] res = new int[len - 1]; for (int i = 0; i < res.length ; i++) { res[i] = index ++; } return res; }
import java.util.*; import java.math.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 最大位数 * @return int整型一维数组 */ public int[] printNumbers (int n) { int max = (int)(Math.pow(10,n) - 1); int[] arr= new int[max]; int j = 0; for(int i = 1;i <= Math.pow(10,n) - 1;i++){ arr[j++] = i; } return arr; } }
int pow = (int)Math.pow(10, n); int[] arr=new int[pow-1]; for(int i=0;i1;i++){ arr[i]=i+1; } return arr;
public class Solution { public int[] printNumbers (int n) { // write code here int m=(int)Math.pow(10,n); int[] res=new int[m-1]; for(int i=0;i<m-1;i++){ res[i]=i+1; } return res; } }
import java.util.*; public class Solution { public int[] printNumbers (int n) { // 解法1:暴力 int ret[] = new int[(int)Math.pow(10,n)-1]; for(int i=0;i<(int)Math.pow(10,n)-1;i++){ ret[i]=i+1; } return ret; } }
import java.util.*; public class Solution { int ret[]; public int[] printNumbers (int n) { // 解法2:递归 ret = new int[(int)Math.pow(10,n)-1]; print(0); return ret; } public void print(int cur){ // 终止递归 if(cur==ret.length) return; // 打印 ret[cur] = cur+1; // 递归 print(cur+1); } }解法3:考虑大数
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param n int整型 最大位数 * @return int整型一维数组 */ public int[] printNumbers (int n) { // write code here ArrayList<Integer> list = new ArrayList<>(); int count = 1; while ((String.valueOf(count).length() <= n)){ list.add(count); count++; } int[] res = new int[list.size()]; for (int i = 0; i < list.size(); i++){ res[i] = list.get(i); } return res; } }