2577. 그리드에서 셀을 방문하는 최소 시간
난이도 : hard
당신은 비 음성 정수로 구성된 m x n 매트릭스 그리드가 주어집니다.
당신은 0th 두 번째 매트릭스의 상단 왼쪽 셀에 서서 인접한 셀로 이동해야합니다 : 위, 아래, 왼쪽 및 오른쪽. 당신이 만드는 각각의 움직임은 1 초가 걸립니다.
return Matrix의 바닥 오른쪽 셀을 방문 할 수있는 최소 필요한 시간입니다. 오른쪽 하단 셀을 방문 할 수 없다면 -1 . 를 반환합니다.
예 1 :
입력 : grid = [[0,1,3,2], [5,1,2,5], [4,3,8,6]
출력 :
입력 : grid = [[0,2,4], [3,2,1], [1,0,4]
출력 :
2
4 sup> 5해결책:
를 사용하여 적용 할 수 있습니다. 이 문제는 본질적으로 왼쪽 상단 셀에서 바닥 오른쪽 셀을 방문하는 데 필요한 가장 짧은 시간을 찾도록 요청합니다. 여기서 각 움직임은 그리드의 값을 기반으로 시간 제약 조건이 있습니다. 접근하다:
그래프 표현 : 그리드의 각 셀을 노드로 취급합니다. 가장자리는 이동할 수있는 인접한 셀 (위, 아래, 왼쪽, 오른쪽)입니다.
: 우선 순위 큐를 사용하여 항상 필요한 시간이 가장 적은 셀을 탐색하십시오. 이것은 우리가 그들을 도달 할 수있는 초기의 순서대로 세포를 처리하고 있습니다.
: 각 셀에 대해 인접한 셀로 이동할 수 있는지 확인하고 방문 할 수있는 시간을 업데이트 할 수 있는지 확인합니다. 셀이 전류보다 나중에 방문되면 새로운 시간과 함께 대기열에 다시 추가합니다.
: 일단 오른쪽 셀에 도달하면 시간을 반환 할 수 있습니다. 큐에 도달하지 않고 대기열을 배출하면 -1.
php /** * @param integer [] [] $ 그리드 * @return Integer */ 함수 최소 시간 ($ 그리드) { ... ... ... /** * ./solution.php로 이동하십시오 */ } // 예 1 $ grid1 = [ [0, 1, 3, 2], [5, 1, 2, 5], [4, 3, 8, 6] ]; 에코 최소 시간 ($ grid1). php_eol; // 출력 : 7 // 예제 2 $ grid2 = [ [0, 2, 4], [3, 2, 1], [1, 0, 4] ]; 에코 최소 시간 ($ grid2). php_eol; // 출력 : -1 ?>
Traversal :
상단 왼쪽 셀 (0, 0)에서 시작하여, 알고리즘은 가장 초기 시간을 방문 할 수있는 모든 도달 가능한 셀을 처리합니다 (Max (0, 그리드 [Newrow] [NewCol] - (시간 1))).
방문한 세포
:
경계 및 유효성 검사
:
시간 계산
:
엣지 케이스
:
복잡성 분석
o (m x n x log (m x n))
$grid = [ [0, 1, 3, 2], [5, 1, 2, 5], [4, 3, 8, 6] ]; echo minimumTime($grid); // Output: 7
$grid = [ [0, 2, 4], [3, 2, 1], [1, 0, 4] ]; echo minimumTime($grid); // Output: -1
입력:
$ grid = [ [0, 2, 4], [3, 2, 1], [1, 0, 4] ]; 에코 최소 시간 ($ 그리드); // 출력 : -1 이 솔루션은 효율적이며 제약 조건 내에서 잘 작동합니다.
연락처 링크
이 시리즈가 도움이된다면
리포지토리
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3