第1个回答 2018-04-02
/**
随便写了一个,其实还有很多方法。利用迭代器的思想实现还是很容易的
。其实还可以用递归。你可以思考试一试!
如果满意的话,请采纳。谢谢🙏
*/
import java.util.ArrayList;
import java.util.List;
public class ArrayCreator {
private int[] array;
public void setArray(int[] array) {
this.array = array;
}
/**
* 如果没有下一个则返回null
* @return
*/
public int[] next(){
if(array.length == 1)
return null;
int[] temp = new int[array.length - 1];
for (int i = 0; i < array.length - 1; i++) {
temp[i] = array[i] + array[i + 1];
}
this.setArray(temp);
return temp;
}
public static void main(String[] args) {
int[] array = {0, 5, 2 ,3, 1, 5, 6, 7, 6, 9};
ArrayCreator arrayCreator = new ArrayCreator();
arrayCreator.setArray(array);
do{
printArray(array);
array = arrayCreator.next();
}while (array != null);
}
public static void printArray(int[] array){
List<Integer> temp = new ArrayList<>();
for (int i : array) {
temp.add(i);
}
System.out.println(temp);
}
}
第2个回答 2018-04-02
import java.util.Arrays;
import java.util.stream.IntStream;
public class Test {
public static void main(String[] args) {
int[] a= {0,5,2,3,1,5,6,7,6,9};
System.out.println(Arrays.toString(a));
do {
a=mergeByOne(a);//每需要合并一次就运行一次
System.out.println(Arrays.toString(a));
}while(a.length>1);
}
static public int[] mergeByOne(final int[] a){
return IntStream.range(0, a.length-1)
.parallel().map(i-> a[i]+a[i+1]).toArray();
}
}[0, 5, 2, 3, 1, 5, 6, 7, 6, 9]
[5, 7, 5, 4, 6, 11, 13, 13, 15]
[12, 12, 9, 10, 17, 24, 26, 28]
[24, 21, 19, 27, 41, 50, 54]
[45, 40, 46, 68, 91, 104]
[85, 86, 114, 159, 195]
[171, 200, 273, 354]
[371, 473, 627]
[844, 1100]
[1944]
Java >8代码