【发布时间】:2012-12-07 17:54:27
【问题描述】:
给定n>=0,创建一个模式为{1,1, 2,1, 2, 3, ... 1, 2, 3 .. n}的数组。
例如,如果您给出n=3,您的方法应该返回数组为{1,1,2,1,2,3}。
我的解决方案在这里....
public int[] upSeries(int n) {
int var1 = n + 1;
int var2 = n;
int var3 = (var1*var2) / 2;
int arr_length = var3;
int value = 1;
int index = 0;
int[] arr = new int[arr_length];
for (int j = 0; j < arr.length; j++) {
for (int p = 0; p < j + 1; p++) {
arr[index] = value;
value++;
if (index == arr.length - 1) {
arr[index] = n;
break;
} else {
index++;
}
}
value = 1;
}
return arr;
}
最好的解决方案是什么?
【问题讨论】:
-
您的解决方案不起作用吗?如果是这样,请告诉我们什么不起作用。如果您实际上是在寻求最佳解决方案,那是主观的,并不是本网站的真正意义。
-
我的代码正在运行,我只是问有没有时间复杂度低的解决方案
-
您的解决方案通常没问题。它与输出的大小成线性关系。除非您正在寻找一些惰性列表评估 - 除了一些微优化之外,您无法做任何真正的改进。
-
如果您的解决方案有效,这里不是发布此问题的地方。一个更好的地方是codereview.stackexchange.com
-
@Ruchi。是的,现在很好。