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");
에 1D 배열을 전달할 것 : 여기 내 주요 방법에 내 전화가 있습니다. 어떻게 컬럼을 통과시킬 수 있습니까? 두 열을 사용하지 않고 전체 열 대신 주소를 전달할 수 있습니까? – coinbird
@CoinBird : 첫 번째 열을 전달하려면 모든 행에서 첫 번째 요소를 가져 와서 새 배열을 만듭니다. – xyz
@CoinBird : http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work으로 답변을 표시합니다. – xyz