2326. 나선형 매트릭스 IV
난이도:중
주제: 배열, 연결 목록, 행렬, 시뮬레이션
행렬의 차원을 나타내는 두 개의 정수 m과 n이 주어졌습니다.
정수 연결 리스트의 헤드도 제공됩니다.
행렬의 왼쪽 위부터 시작하여 나선형 순서(시계 방향)으로 표시된 연결 목록의 정수를 포함하는 m x n 행렬을 생성합니다. . 남은 공백이 있으면 -1로 채웁니다.
생성된 행렬을 반환합니다.
예 1:
- 입력: m = 3, n = 5, 헤드 = [3,0,2,6,8,1,7,9,4,2,5,5,0]
- 출력: [[3,0,2,6,8],[5,0,-1,-1,1],[5,2,4,9,7]]
-
설명:
- 위 다이어그램은 값이 행렬에 인쇄되는 방식을 보여줍니다.
- 행렬의 나머지 공간은 -1로 채워져 있습니다.
예 2:
- 입력: m = 1, n = 4, 헤드 = [0,1,2]
- 출력: [[0,1,2,-1]]
-
설명:
- 위 다이어그램은 값이 행렬의 왼쪽에서 오른쪽으로 인쇄되는 방식을 보여줍니다.
- 행렬의 마지막 공백은 -1로 설정됩니다.
예 3:
- 입력: 비용 = [[2, 5, 1], [3, 4, 7], [8, 1, 2], [6, 2, 4], [3, 8, 8] ]
- 출력: 10
제약조건:
- 1 5
- 1 5
- 목록의 노드 수는 [1, m * n] 범위에 있습니다.
- 0
힌트:
- 먼저 -1로 채워진 m x n 행렬을 생성합니다.
- 방향 벡터 ⟨di, dj⟩를 사용하여 (i, j)의 행렬 내에서 탐색합니다. (i, j)에서는 현재 방향으로 계속 나아갈 수 있는지 판단해야 합니다.
- 계속 갈 수 없다면 방향 벡터를 시계 방향으로 90도 회전하세요.
해결책:
연결된 목록의 값으로 채우는 m x n 행렬의 나선형 순회를 시뮬레이션합니다. 해당 연결 목록 값이 없는 나머지 위치는 -1로 채워집니다.
솔루션의 구성은 다음과 같습니다.
- 행렬 초기화: 먼저 -1로 초기화된 m x n 행렬을 만듭니다.
- 방향 벡터: 오른쪽, 아래쪽, 왼쪽, 위쪽 방향을 순환하는 방향 벡터를 사용하여 나선형 이동을 제어할 수 있습니다. 이를 통해 나선형 방식으로 행렬을 탐색할 수 있습니다.
- 연결된 목록 반복: 연결 목록을 탐색하여 나선형 순서로 행렬에 값을 배치합니다.
- 경계 처리: 경계에 도달했는지 또는 이미 채워진 셀을 만났는지 확인합니다. 그렇다면 방향(시계방향)을 바꿔보겠습니다.
이 솔루션을 PHP로 구현해 보겠습니다: 2326. 나선형 매트릭스 IV
<?php class ListNode { public $val = 0; public $next = null; function __construct($val = 0, $next = null) { $this->val = $val; $this->next = $next; } } /** * @param Integer $m * @param Integer $n * @param ListNode $head * @return Integer[][] */ function spiralMatrix($m, $n, $head) { ... ... ... /** * go to ./solution.php */ } // Helper function to print the matrix (for debugging) function printMatrix($matrix) { foreach ($matrix as $row) { echo implode(" ", $row) . "\n"; } } // Example usage: // Create the linked list: [3,0,2,6,8,1,7,9,4,2,5,5,0] $head = new ListNode(3); $head->next = new ListNode(0); $head->next->next = new ListNode(2); $head->next->next->next = new ListNode(6); $head->next->next->next->next = new ListNode(8); $head->next->next->next->next->next = new ListNode(1); $head->next->next->next->next->next->next = new ListNode(7); $head->next->next->next->next->next->next->next = new ListNode(9); $head->next->next->next->next->next->next->next->next = new ListNode(4); $head->next->next->next->next->next->next->next->next->next = new ListNode(2); $head->next->next->next->next->next->next->next->next->next->next = new ListNode(5); $head->next->next->next->next->next->next->next->next->next->next->next = new ListNode(5); $head->next->next->next->next->next->next->next->next->next->next->next->next = new ListNode(0); $m = 3; $n = 5; $matrix = spiralMatrix($m, $n, $head); printMatrix($matrix); ?>
설명:
행렬 초기화: 행렬은 -1로 초기화되므로 채워지지 않은 공간은 기본적으로 -1로 유지됩니다.
-
나선형 운동:
- 방향 벡터 dirs는 오른쪽, 아래, 왼쪽, 위의 네 방향으로의 움직임을 관리합니다.
- dirIndex 인덱스는 현재 방향을 추적합니다. 한 방향으로 이동한 후 다음 위치를 계산하여 유효한지 확인합니다. 그렇지 않다면 방향을 바꿔보겠습니다.
-
연결된 목록 탐색:
- 나선형 순서에 따라 연결된 목록 노드를 탐색하여 행렬에 값을 하나씩 배치합니다.
-
경계 및 방향 변경:
- 잘못된 위치(경계를 벗어났거나 이미 채워짐)를 발견하면 방향을 90도 회전합니다(즉, 방향 벡터 변경).
시간 복잡도:
- 모든 셀을 한 번 탐색하므로 행렬을 채우는 데는 O(m * n)이 걸립니다. 따라서 시간 복잡도는 O(m * n)이며 이는 제약 조건을 고려하면 효율적입니다.
연락처 링크
이 시리즈가 도움이 되었다면 GitHub에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!
이렇게 더 유용한 콘텐츠를 원하시면 저를 팔로우해주세요.
- 링크드인
- 깃허브
위 내용은 나선형 매트릭스 IV의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

종종 키워드와 추적 매개 변수로 혼란스러워하는 긴 URL은 방문자를 방해 할 수 있습니다. URL 단축 스크립트는 솔루션을 제공하여 소셜 미디어 및 기타 플랫폼에 이상적인 간결한 링크를 만듭니다. 이 스크립트는 개별 웹 사이트 a에 유용합니다

Laravel은 직관적 인 플래시 방법을 사용하여 임시 세션 데이터 처리를 단순화합니다. 응용 프로그램에 간단한 메시지, 경고 또는 알림을 표시하는 데 적합합니다. 데이터는 기본적으로 후속 요청에만 지속됩니다. $ 요청-

이것은 Laravel 백엔드가있는 React Application을 구축하는 데있어 시리즈의 두 번째이자 마지막 부분입니다. 이 시리즈의 첫 번째 부분에서는 기본 제품 목록 응용 프로그램을 위해 Laravel을 사용하여 편안한 API를 만들었습니다. 이 튜토리얼에서는 Dev가 될 것입니다

Laravel은 간결한 HTTP 응답 시뮬레이션 구문을 제공하여 HTTP 상호 작용 테스트를 단순화합니다. 이 접근법은 테스트 시뮬레이션을보다 직관적으로 만들면서 코드 중복성을 크게 줄입니다. 기본 구현은 다양한 응답 유형 단축키를 제공합니다. Illuminate \ support \ Facades \ http를 사용하십시오. http :: 가짜 ([ 'google.com'=> 'Hello World', 'github.com'=> [ 'foo'=> 'bar'], 'forge.laravel.com'=>

PHP 클라이언트 URL (CURL) 확장자는 개발자를위한 강력한 도구이며 원격 서버 및 REST API와의 원활한 상호 작용을 가능하게합니다. PHP CURL은 존경받는 다중 프로모토콜 파일 전송 라이브러리 인 Libcurl을 활용하여 효율적인 execu를 용이하게합니다.

고객의 가장 긴급한 문제에 실시간 인스턴트 솔루션을 제공하고 싶습니까? 라이브 채팅을 통해 고객과 실시간 대화를 나누고 문제를 즉시 해결할 수 있습니다. 그것은 당신이 당신의 관습에 더 빠른 서비스를 제공 할 수 있도록합니다.

2025 PHP Landscape Survey는 현재 PHP 개발 동향을 조사합니다. 개발자와 비즈니스에 대한 통찰력을 제공하는 프레임 워크 사용, 배포 방법 및 과제를 탐색합니다. 이 조사는 현대 PHP Versio의 성장을 예상합니다

이 기사에서는 Laravel 웹 프레임 워크에서 알림 시스템을 탐색 할 것입니다. Laravel의 알림 시스템을 사용하면 다른 채널을 통해 사용자에게 알림을 보낼 수 있습니다. 오늘은 알림을 보낼 수있는 방법에 대해 논의합니다


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)
