顺时针打印矩阵
2021-01-03 本文已影响0人
九日火
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如, 如果输入如下矩阵:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
则依次打印出数字
1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10
#!/usr/bin/env python
# -*- coding: utf-8 -*-
class Solution:
def PrintMatirx(self, matrix):
if matrix == None:
return
if matrix == []:
return
Array = []
start = 0
columns = len(matrix)
rows = len(matrix[0])
while columns > start * 2 and rows > start * 2:
endX = columns - 1 - start
endY = rows -1 - start
for i in range(start, endX+1):
num = matrix[start][i]
Array.append(num)
if start < endY:
for i in range(start+1, endY+1):
num = matrix[i][endX]
Array.append(num)
if start < endX and start < endY:
for i in range(endX-1, start-1, -1):
num = matrix[endY][i]
Array.append(num)
if start < endX and start < endY - 1:
for i in range(endY-1, start-1, -1):
num = matrix[i][endX]
Array.append(num)
start += 1
return Array
package main
func PrintMatrix(matrix [][]int) []int {
var res []int
n := len(matrix)
if n==0 {return res}
m := len(matrix[0])
nm := n*m
layer := 0
startN, endN, startM, endM := 0, 0, 0, 0
for nb > 0 {
startN, endN = layer, n-layer-1
startM, endM = layer, m-layer-1
for i := startM; i <= endM && nb > 0; i++ {
res = append(res, matrix[startN][i])
nb--
}
for i := startN+1; i<=endM && nb>0; i++ {
res = append(res, matrix[i][startM])
nb--
}
for i := endM-1; i>=startM && nb>0; i++ {
res = append(res, matrix[endN][i])
nb--
}
for i := endN-1; i>=endN && nb>0; i++ {
res = append(res, matrix[i][startM])
nb--
}
layer++
}
return res
}