我在ArrayList中有一个数字列表。我正在尝试从列表中删除奇数索引编号。我们需要循环执行此操作,直到它在列表中仅保留1个元素为止。
示例:
列表 -> {1,2,3,4,5,1,2,3,4,5}
在
迭代1之后删除奇数索引元素后的列表: {
2,4,1、3,5 } 迭代2 : {
4,3 } 迭代3: {3}
蛮力方法有效,但是还有其他方法吗?列表中的元素数量可能很大,直到10 ^ 18。
private static int getLastNumber(ArrayList<Integer> list)
{
int size = list.size();
for (int i = 1; i<=size; i++) {
if (i%2 != 0) {
list.set(i-1, -1);
}
}
for (int i = 0; i<list.size(); i++) {
if (list.get(i) == -1) {
list.remove(i);
}
}
if (list.size() == 1) {
return list.get(0);
} else {
return getLastNumber(list);
}
}
Run Code Online (Sandbox Code Playgroud)