Truyền tải ma trận xoắn ốc Python
Duyệt và liệt kê các phần tử của ma trận 2D theo thứ tự xoắn ốc trong Python.
Tổng quan
Truyền ma trận xoắn ốc là một bài toán mảng đa chiều cổ điển. Nó đòi hỏi phải vượt qua các ranh giới bên ngoài theo chiều kim đồng hồ và thu hẹp dần các ranh giới.
Chúng tôi duy trì bốn con trỏ: `top`, `bottom`, `left` và `right` để theo dõi giới hạn của các phần ma trận chưa được thăm dò.
Bằng cách duyệt từ trái sang phải, từ trên xuống dưới, từ phải sang trái và từ dưới lên trên theo thứ tự, chúng ta bao phủ tất cả các ô một cách có hệ thống.
Đầu ra mã & thực thi
Di chuyển xoắn ốc theo chiều kim đồng hồ hiển thị thao tác chỉ mục.
spiral.py
Thử trong Trình chỉnh sửadef 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))Đầu ra thiết bị đầu cuối
Matrix Spiral Order:
[1, 2, 3, 6, 9, 8, 7, 4, 5]Triển khai từng bước
- Kết xuất đồ họa 2D và theo dõi đường dẫn xoắn ốc
- Các mẫu điều hướng bố cục lưới trong công cụ dữ liệu
- Kiểm tra đánh giá thuật toán nâng cao
Câu hỏi thường gặp
Độ phức tạp thời gian của truyền tải xoắn ốc là gì?
Độ phức tạp về thời gian là O(m * n) trong đó m là hàng và n là cột, vì chúng ta truy cập mọi ô trong lưới đúng một lần.