算法參考:
劍指offer面試題:輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字 - CSDN博客 http://blog.csdn.net/yanxiaolx/article/details/52254590
劍指offer_輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字 - CSDN博客 http://blog.csdn.net/lingongheng/article/details/52725192
python代碼:
方法一:
class Solution:
# matrix類型為二維列表,需要返回列表
#劍指offer面試題:輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字 - CSDN博客 http://blog.csdn.net/yanxiaolx/article/details/52254590
def printMatrix(self, matrix):
# write code here
if matrix==[[]]:
return
row=len(matrix)
column=len(matrix[0])
left=0
right=column-1
top=0
boom=row-1
res=[]
while right>left and top<boom:
#從左到右
for i in range(left,right+1):
res.append(matrix[top][i])
#從上到下
for i in range(top+1,boom+1):
res.append(matrix[i][right])
#從右到左
for i in range(right-1,left-1,-1):
res.append(matrix[boom][i])
#從下到上
for i in range(boom-1,top,-1):
res.append(matrix[i][left])
left+=1
right-=1
top+=1
boom-=1
#剩下一行
if boom==top and left<right:
for i in range(left,right+1):
res.append(matrix[boom][i])
#剩下一列
if left==right and boom>top:
for i in range(top,boom+1):
res.append(matrix[i][left])
#剩下一個
if boom==top and left==right:
res.append(matrix[left][top])
return res
方法二:
# -*- coding:utf-8 -*-
class Solution:
# matrix類型為二維列表,需要返回列表
def printMatrix(self, matrix):
# write code here
if matrix==[[]]:
return
row=len(matrix)
column=len(matrix[0])
start=0
res=[]
while row>start*2 and column>start*2:
endX=column-1-start
endY=row-1-start
#從左到右打印一行
for i in range(start,endX+1):
res.append(matrix[start][i])
#print(matrix[start][i])
#從上往下打印一列
if start<endY:
for i in range(start+1,endY+1):
res.append(matrix[i][endX])
#print(matrix[i][endX])
#從右到左打印一行
if start<endX and start<endY:
for i in range(endX-1,start-1,-1):
res.append(matrix[endY][i])
#print(matrix[endY][i])
#從下到上打印一列
if start<endX and start<endY-1:
for i in range(endY-1,start,-1):
res.append(matrix[i][start])
#print(matrix[i][start])
start+=1
return res
---------------------
作者:yangnianjinxin
來源:CSDN
原文:https://blog.csdn.net/yangnianjinxin/article/details/79243110
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!