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:
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].Solution:
class Solution:
# @param matrix, a list of lists of integers
# @return a list of integers
def spiralOrder(self, matrix):
solution = []
if len(matrix)==0:
return solution
minRow = 0
maxRow = len(matrix)-1
minCol = 0
maxCol = len(matrix[0])-1
row = 0
col = 0
state = 1
if col == maxCol:
state = 2
while len(solution)<len(matrix) * len(matrix[0]):
solution.append(matrix[row][col])
if state == 1:
col += 1
if col == maxCol:
state = 2
minRow += 1
elif state ==2:
row += 1
if row == maxRow:
state = 3
maxCol -= 1
elif state ==3:
col -= 1
if col == minCol:
state = 4
maxRow -=1
else:
row -= 1
if row == minRow:
state = 1
minCol += 1
return solution
No comments :
Post a Comment