2014-02-21 2 views
0

배열의 각 행과 각 열에 중복 값 (라틴 사각형 검사)이 있는지 확인하려고합니다. 1D 배열을 검사하는 메서드를 만들었지 만 2D 배열의 일부를이 메서드에 전달하는 방법을 알 수 없습니다.JAVA 패스 2D 배열의 개별 치수를 1D 배열로 전달합니다.

public static boolean hasDuplicates(int [] inArray) 
    { 
     for(int i = 0; i < inArray.length; i++) 
     for(int j = i + 1; j < inArray.length; j++) 
      if(inArray[i] == inArray[j]) 
       return true; 
     return false; 
    } 

여기 내 이전 메소드를 호출하는 방법을 내 엉망입니다 : 여기 내 1D 배열 검사 방법의 IT 지금 내 splitRows 및 splitCols 배열은 '돈이다와

public static boolean arrayChecker(int[][] inArray) 
    { 
     int [] splitRows = new int[inArray.length]; 
     int [] splitCols = new int[inArray[0].length]; 

     for(int row = 0; row < inArray.length; row++) 
     { 
     for(int col = 0; col < inArray[0].length; col++) 
      splitRows[col] = inArray[row][col]; 

     if(hasDuplicates(splitRows)) 
       return true; 
     } 

     for(int col = 0; col < inArray[0].length; col++) 
     { 
     for(int row = 0; row < inArray.length; row++) 
      splitCols[row] = inArray[row][col]; 

     if(hasDuplicates(splitCols)) 
       return true; 
     } 


     return false; 
    } 

나는 문제를 알고 각 루프 이후에 값을 재설정하므로 다시 실행될 때 이전 값과 새로운 값을 검사합니다. 나는 그 길을 찾을 수없는 것 같습니다. 루프 앞에 배열 = null을 설정해 보았습니다.하지만 크기를 지우고 나사를 더 조이십시오.

도움을 주시면 감사하겠습니다.

편집 :

 if (arrayChecker(originalArray)) 
     System.out.println("Invalid"); 
     else 
     System.out.println("Valid"); 

답변

1
hasDuplicates(inArray[row]) 

멋진 아, 내가 그 일을 알지 못했다 hasDuplicates

+0

에 1D 배열을 전달할 것 : 여기 내 주요 방법에 내 전화가 있습니다. 어떻게 컬럼을 통과시킬 수 있습니까? 두 열을 사용하지 않고 전체 열 대신 주소를 전달할 수 있습니까? – coinbird

+0

@CoinBird : 첫 번째 열을 전달하려면 모든 행에서 첫 번째 요소를 가져 와서 새 배열을 만듭니다. – xyz

+0

@CoinBird : http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work으로 답변을 표시합니다. – xyz

관련 문제