이 Java 코드는 배열을 가로 지르는 데 필요한 최소 점프를 계산합니다. 여기서 각 요소는 해당 위치에서 최대 점프 거리를 나타냅니다. 알고리즘과 코드를 단계별로 살펴 보겠습니다. 목표는 인덱스 0에서 시작하여 배열의 끝에 도달하는 데 필요한 가장 적은 점프를 찾는 것입니다. 끝을 연락 할 수 없으면 함수는 -1.
문제 정의 :
배열이 주어지면 각 요소가 해당 위치에서 전진 할 수있는 최대 단계 수를 나타냅니다. 마지막 인덱스에 도달하려면 최소 점프 수를 결정합니다. .
알고리즘 :
알고리즘은 욕심 많은 접근 방식을 사용하여 배열을 반복하고 각 단계에서 가장 먼 도달 가능한 색인 ()을 추적합니다. 각 점프 내에서 진행 상황을 추적하기 위해 카운터와 를 유지합니다.
초기화 : arr[]
arr[i]
: 총 점프 수를 계산합니다. 0으로 초기화되었습니다
: 현재 위치에서 도달 할 수있는 가장 먼 지수. 초기화 .
: 현재 점프 내에 남아있는 계단 수. 초기화
.
maxReach
jumps
반복 : steps
코드는 배열을 통해 반복됩니다
각 요소에 대해 : :
- 업데이트 및 최대 및 (현재 위치에서 가장 멀리 도달 할 수있는 인덱스).
감소 (우리는 한 걸음 단계를 밟았습니다).
가 0이되면 현재 점프의 계단을 소진했음을 의미합니다. 그러므로 : <.>
- 증분
jumps
.
가 - 보다 작거나 같으면, 우리가 붙어 있고 더 이상 도달 할 수 없다는 것을 의미합니다. 반환 -1.
maxReach
리셋 arr[0]
로 (다음 점프의 나머지 단계).
-
steps
arr[0]
-
종료 :
루프가 -1을 반환하지 않고 완료되면 끝이 도달 할 수 있음을 의미합니다. 함수는
Java 코드 : -
- 시간과 공간 복잡성 :
arr[i]
시간 복잡성 : o (n), 여기서 n은 배열의 길이입니다. 코드는 배열을 한 번 반복합니다
공간 복잡성 : - o (1), 알고리즘이 일정한 양의 추가 공간을 사용하기 때문에.
이 개선 된 설명 및 코드는 알고리즘과 구현에 대한 명확한 이해를 제공합니다. 추가 된 주석은 가독성을 향상시키고 에지 케이스 처리 (빈 또는 단일 요소 배열) 코드를 더욱 강력하게 만듭니다.
위 내용은 Java를 사용하여 최소 점프에 도달하기위한 최소 점프 수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!