에서 영감을 우리는 타워 도약을 하고 관련 2D 미로 마이너스 1D
소개
당신의 임무는 지정된 규칙에 따라 배열 미로에서 벗어날 수있는 가장 짧은 경로를 찾는 것입니다.
도전
n 개의 요소를 갖는 1D 어레이 a 는 n 개의 포인트 로 구성된 미로로 간주 될 수 있으며 , 여기서 인덱스 k 를 갖는 포인트는 일방향 방식으로 k + a [ k ] 및 k - a [ k ]를 갖는 포인트에 연결된다 . 즉, 앞으로 또는 뒤로 정확하게 이동할 수 있습니다 [ K 지수와 지점에서] 단계 K . 배열의 경계를 벗어난 인덱스를 가진 포인트는 미로 외부에서 간주됩니다.
이를 설명하기 위해 다음 배열을 고려하십시오.
[0,8,5,9,4,1,1,1,2,1,2]
현재 5 번째 요소 인 경우 요소가 4이므로 4 단계를 9 번째 요소로, 또는 4 단계를 1 번째 요소로 홉할 수 있습니다. 후자를 수행하면 요소 0으로 끝나고 더 이상 이동할 수 없음을 나타냅니다. 전자를 수행하면 9 번째 요소가 2이므로 11 번째 요소 (두 번째 요소)로 홉하도록 선택할 수 있으며, "13 번째 요소"로 다시 홉할 수 있습니다. 배열과 미로의 출구를 고려했다.
따라서 중간에있는 요소에서 시작하면 미로에서 나가는 한 가지 방법은 1 단계 뒤로, 4 단계 앞으로, 2 단계 앞으로, 2 단계 앞으로 이동하는 것 [-1,4,2,2]
입니다. 이는 배열로 표현할 수 있습니다 . 또는 [4,8,10,12]
모든 중간 및 최종 포인트의 0부터 시작하는 인덱스 (1부터 시작하는 인덱스도 좋음) 또는 부호 만 기록 하는 배열로 이를 표현할 수 있습니다 [-1,1,1,1]
.
낮은 인덱스 끝에서 미로를 탈출하는 것도 좋습니다.
첫 번째 표기법을 사용하고 동일한 요소에서 시작하는 [1,1,1,2,2]
것도 해결책이지만 4 단계 대신 5 단계가 있기 때문에 최적이 아닙니다.
임무는 배열 미로에서 빠져 나와 경로를 출력하는 가장 짧은 경로를 찾는 것입니다. 최적 경로가 두 개 이상인 경우 일부 또는 전부를 출력 할 수 있습니다. 솔루션이없는 경우 올바른 경로에서 식별 할 수있는 잘못된 값을 출력해야합니다 (아무 출력도 생성되지 않음).
간단히하기 위해 배열의 요소 수는 항상 홀수이며 중간 요소부터 시작합니다.
테스트 사례
테스트 사례는 다양한 형태의 출력을 보여 주지만 이에 국한되지는 않습니다.
Input
Output
[0,8,5,9,4,1,1,1,2,1,2]
[-1,4,2,2]
[2,3,7,1,2,0,2,8,9]
[2,9] (or [2,-5] or [[2,9],[2,-5]])
[0,1,2,2,3,4,4,4,3,2,2,3,0]
[1,-1,1,1]
[0,1,2,2,4,4,6,6,6,6,6,4,2,1,2,2,0]
[]
명세서
[1,1,1,-1]
대신에 [-1,1,1,1]
?
[0,8,5,9,4,1,1,1,2,1,2]
출력[[-1,4,2,2]]
)