재 귀적 으로 질서 있 는 2 차원 배열 을 찾 는 방법 으로 상세 하 게 설명 하 다.
가설×4 의 질서 있 는 2 차원 배열: 1 2 8 9
2 4 9 12
4 7 10 13
6 8 11 15
찾 을 숫자 는 6 입 니 다.알고리즘 의 핵심 사상 은 가장 왼쪽 상단 의 숫자 9 를 먼저 취하 고 9 대 6 이 크기 때문에 9 보다 큰 숫자, 즉 네 번 째 열 을 제외 한 다음 에 8 을 취하 고 같은 이치 로 세 번 째 열 을 제외 한 다음 에 2, 6 보다 작 으 면 2 보다 작은 숫자, 즉 첫 번 째 줄, 같은 이치 로 4 를 취하 고 두 번 째 줄 을 제외 한 7 을 취하 고 두 번 째 열 을 제외 한 4 를 취하 고 세 번 째 줄 을 제외 한 6 을 취하 고 똑 같이 true 로 돌아 가 는 것 이다.
여기 서 우 리 는 재 귀적 으로 실현 합 니 다. 코드 는:
public class FindMatrixNumber {
private static FindMatrixNumber instance;
private static boolean found = false;
public static FindMatrixNumber getInstance() {
if (instance == null) {
instance = new FindMatrixNumber();
}
return instance;
}
public static boolean find(int matrix[][], int number) {
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return false;
} else {
System.out.println("****Start finding****");
findMatrixNumber(matrix, matrix.length, 0, matrix[0].length,
number);
System.out.println("*****End finding*****");
}
return found;
}
private static void findMatrixNumber(int matrix[][], int rows, int row,
int columns, int number) {
if (row > rows - 1)
return;
int cornerNumber = matrix[row][columns - 1];
System.out.println(cornerNumber);
if (cornerNumber == number) {
found = true;
return;
} else if (cornerNumber < number) {
findMatrixNumber(matrix, rows, ++row, columns, number);
} else if (cornerNumber > number) {
findMatrixNumber(matrix, rows, row, --columns, number);
}
}
}
테스트 코드:
public class TestFindMatrixNumber {
public static void main(String[] args) {
int matrix[][] = {{1,2,8,9},{2,4,9,12},{4,7,10,13},{6,8,11,15}};
System.out.println(FindMatrixNumber.find(matrix, 6));
}
}
테스트 코드 실행 결 과 는:
****Start finding****
9
8
2
4
7
4
6
*****End finding*****
true
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.