마지막 두 번째 요소가 제거 될 때까지 모든 두 번째 요소를 제거하는 것이 문제입니다. (요소가 원으로 놓여 있다고 가정 할 때)프로그램 효율성 및 java.lang.OutOfMemoryError : Java 힙 공간
내 프로그램은 작은 값의 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);
}
}
이 문제는 완전합니다. "문제는 마지막 요소가 남아있을 때까지 모든 두 번째 요소를 제거하는 것입니다." ? –
이것은 질문의 대답과 관련이 없지만 목록에 문자열이 포함되어있을 때 x 및 y를 Object로 사용하는 이유는 무엇입니까? –
가장 확실한 것은 문자열을 사용하지 않는 것입니다 (''i +''i ''로 변경하십시오). 그렇지만 별개로 * * 악마는 * 이것을하려고합니까?! – Boann