Python 나선형 매트릭스 탐색
Python에서 나선형 순서로 2D 행렬의 요소를 탐색하고 나열합니다.
개요
나선형 행렬 순회는 고전적인 다차원 배열 문제입니다. 외부 경계를 시계 방향으로 횡단하고 경계를 점진적으로 축소해야 합니다.
우리는 방문하지 않은 행렬 부분의 경계를 추적하기 위해 `top`, `bottom`, `left` 및 `right`의 네 가지 포인터를 유지합니다.
왼쪽에서 오른쪽으로, 위에서 아래로, 오른쪽에서 왼쪽으로, 아래에서 위로 순서대로 이동하여 모든 셀을 체계적으로 포괄합니다.
코드 및 실행 출력
인덱스 조작을 보여주는 시계 방향 나선형 순회.
spiral.py
에디터에서 사용해 보세요def spiral_order(matrix):
if not matrix:
return []
result = []
top, bottom = 0, len(matrix) - 1
left, right = 0, len(matrix[0]) - 1
while top <= bottom and left <= right:
# Traverse Right
for col in range(left, right + 1):
result.append(matrix[top][col])
top += 1
# Traverse Down
for row in range(top, bottom + 1):
result.append(matrix[row][right])
right -= 1
if top <= bottom:
# Traverse Left
for col in range(right, left - 1, -1):
result.append(matrix[bottom][col])
bottom -= 1
if left <= right:
# Traverse Up
for row in range(bottom, top - 1, -1):
result.append(matrix[row][left])
left += 1
return result
grid = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
print("Matrix Spiral Order:")
print(spiral_order(grid))터미널 출력
Matrix Spiral Order:
[1, 2, 3, 6, 9, 8, 7, 4, 5]단계별 구현
- 2D 그래픽 렌더링 및 나선형 경로 추적
- 데이터 엔진의 그리드 레이아웃 탐색 패턴
- 고급 알고리즘 평가 테스트
자주 묻는 질문
나선형 횡단의 시간 복잡도는 얼마입니까?
시간 복잡도는 O(m * n)입니다. 여기서 m은 행이고 n은 열입니다. 그리드의 모든 셀을 정확히 한 번 방문하기 때문입니다.