이게 문제 야:
ArrayList<BigInteger> a=new ArrayList<BigInteger>();
ArrayList<BigInteger> b=new ArrayList<BigInteger>();
for(int j=0;j<2;j++){
// Stuff
}
각 테스트에 대해 동일한 목록을 재사용하고 있으므로 두 번째 테스트의 값을 첫 번째 테스트의 데이터가 이미 포함 된 목록에 추가합니다.
옵션 :
- (선호) 각 테스트에 대한 새 목록 만들기
- 각 테스트를 시작할 때 목록을 지 웁니다.
논리적으로 한 테스트에서 다른 테스트로 목록을 유지하고 싶지 않다는 점을 감안할 때 코드를 다음과 같이 변경합니다.
for(int j = 0; j < 2; j++){
List<BigInteger> a = new ArrayList<BigInteger>();
List<BigInteger> b = new ArrayList<BigInteger>();
// Populate the lists, etc.
}
이 점에 유의 도 쉽게의 전체 동작을 추출 할 수 있습니다 별도의 방법으로 "일종의 그 데이터를 읽어 크기를 읽기".
또한 루프를 다음과 같이 변경하고 싶다고 생각 합니다.
for(int j = 0; j < testcases; j++) {
... 그렇지 않으면 두 번의 테스트 후에 멈출 것입니다.
Java 7을 사용하는 경우 유형 추론을 사용하여 ArrayList
생성을 더 간단 하게 만들 수도 있습니다.
List<BigInteger> a = new ArrayList<>();
... 그리고 " n
목록으로 숫자 읽기 "를 별도의 방법으로 추출 하여 코드가 다음과 같이 보일 수도 있습니다.
int size = Integer.parseInt(sc.next());
System.out.println(size);
List<BigInteger> a = readBigIntegers(sc, size);
List<BigInteger> b = readBigIntegers(sc, size);
// Now sort etc.
또한 Scanner.nextInt()
명시 적 Integer.parseInt
호출 대신 사용 을 고려 하십시오 .
출처
https://stackoverflow.com/questions/22007806