在下面的代码中,我能够得到所需的答案,我正在删除比它的前一个索引和下一个索引更小的数字。 然而,除了答案之外,我还遇到了线程“main”java.lang.IndexOutOfBoundsException:index:4,size:4中的错误异常,需要帮助确定如何在这里中断递归。 提前谢谢你。
public class numberProblem{
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
list.add(10);
list.add(3);
list.add(20);
list.add(5);
list.add(30);
list.add(20);
list.add(60);
int len = list.size();
System.out.println(list);
testList(list, len);
}
public static void testList(ArrayList<Integer> list, int len) {
System.out.println("Len is:"+len);
System.out.println(list.size());
ArrayList<Integer> l = list;
len= l.size();
for(int i= 1;i<=len-1;i++) {
if(l.get(i)<l.get(i-1) && l.get(i)<l.get(i+1)) {
l.remove(i);
testList(l, l.size());
}
}
System.out.println(list);
}
}
这种没有递归的解决方案也可以用来实现您试图实现的目标:
public static void testList(ArrayList<Integer> list, int len) {
System.out.println("Len is:"+len);
System.out.println(list.size());
ArrayList<Integer> l = list;
len= l.size();
for(int i= 1;i<len-1;i++) {
if(l.get(i)<l.get(i-1) && l.get(i)<l.get(i+1)) {
l.remove(i);
i--;
len--;
}
}
System.out.println(list);
}