java.lang.OutOfMemoryError: Java heap space
记录一次OOM。
具体代码如下
package com.klaus.array.prob17;
import org.junit.Test;
public class Solution {
// 没考虑大数情况
// public int[] printNumbers(int n) {
// int end = (int)Math.pow(10, n) - 1;
// int[] res = new int[end];
// for(int i = 0; i < end; i++)
// res[i] = i + 1;
// return res;
// }
// 考虑大数
StringBuilder res = new StringBuilder();
int _n;
char[] num, loop = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
public String printNumbers(int n) {
_n = n;
num = new char[n];
dfs(0);
res.deleteCharAt(res.length() - 1);
return res.toString();
}
void dfs(int x) {
if (x == _n) {
res.append(String.valueOf(num)).append(",");
return;
}
for (char i : loop) {
num[x] = i;
dfs(x + 1);
}
}
@Test
public void test() {
System.out.println(printNumbers(30));
}
}
原因就是StringBuilder对象在运行中每次都比上一次大一倍,太大了,堆内存不够存放导致了堆溢出。
本文来自博客园,作者:klaus08,转载请注明原文链接:https://www.cnblogs.com/klaus08/p/15366077.html