问题是删除每个第二个元素,直到最后一个元素保留。(假设元素被放置在圆圈中)
我的程序适用于较小的 n 值,但是当我使用较大的值时,它会给我一条java.lang.OutOfMemoryError: Java heap space
消息。
有些人可以帮助我了解我需要做些什么来提高我的代码效率并解决这个错误。
谢谢你!
import java.util.*;
public class ArrayLists {
public static void main(String[] args) {
ArrayList myList = new ArrayList();
int n = 23987443;
for (int i = 1; i <= n; i = i + 2) {
myList.add("" + i);
}
Object x = myList.get(myList.size() - 1);
Object y = myList.get(myList.size() - 1);
while (myList.size() != 1) {
if (x == y) {
for (int i = 0; i <= myList.size() - 1; i++) {
myList.remove(i);
}
}
else {
x = y;
for (int i = 1; i <= myList.size() - 1; i++) {
myList.remove(i);
}
}
y = myList.get(myList.size() - 1);
}
System.out.println("Winner:" + myList);
}
}