【发布时间】:2020-03-22 18:27:46
【问题描述】:
给定一个泛型类型列表(List),以及两个泛型类型对象:a,b:
-设计一种算法,该算法返回一个列表,该列表包含原始列表中属于范围 [a,b) 的每个元素。
-算法必须包含比较器E。
-解决方案必须是“分而治之”的算法。
这是我想出的:
private static <E extends Comparable<E>> List <E> Dominio(List<E> lista, E a, E b){
return DominioAux(lista,a,b,0,lista.size()-1);
}
private static <E extends Comparable<E>> List <E> DominioAux(List<E> lista, E a, E b,Integer i, Integer j){
List<E> res = new ArrayList<>();
Integer m = (j-i)/2;
E pm = lista.get(m);
if (pm == a) {
DominioAux(lista,a,b,m,j);
} else if(pm==b) {
DominioAux(lista,a,b,i,m-1);
}
if (pm.compareTo(a)<0) {
res = DominioAux(lista,a,b,m,j);
}
if (pm.compareTo(a)>0) {
res = DominioAux(lista,a,b,i,m);
}
res = lista.subList(i, j);
return res;
}
问题是当执行其中一个 if 时,我要么得到“索引越界异常”,要么得到“堆栈溢出错误”。
【问题讨论】:
标签: java list generic-list divide-and-conquer generic-type-argument