問題は、最後の要素が残るまで、2 つおきの要素を削除することです。(要素が円形に配置されていると仮定)
私のプログラムは 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);
}
}