0%

【LeetCode with Python】 54. Spiral Matrix

题目

原题页面:https://oj.leetcode.com/problems/spiral-matrix/
本文地址:</spiral-matrix/>
题目类型:Array
难度评价:Medium
类似题目:(M) Spiral Matrix II

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:
[ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ]
You should return [1,2,3,6,9,8,7,4,5].


分析

还是一道下标计算的题目,用两重嵌套for循环,以螺旋状的方式遍历二维数组。


代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution:
# @param matrix, a list of lists of integers
# @return a list of integers
def spiralOrder(self, matrix):

m = len(matrix)
if 0 == m:
return [ ]
n = len(matrix[0])
if 0 == n:
return [ ]
arr = [ ]

round = (min(m, n) + 1) / 2
for x in range(0, round):
for y in range(x, n - x):
arr.append(matrix[x][y])
for y in range(x + 1, m - x - 1):
arr.append(matrix[y][n - x - 1])
if m - 2 * x > 1: ###
for y in range(n - x - 1, x - 1, -1):
arr.append(matrix[m - x - 1][y])
if n - 2 * x > 1: ###
for y in range(m - x - 2, x, -1): ###
arr.append(matrix[y][x])
return arr