python实现转圈打印矩阵 python实现转圈打印矩阵
hotpotbo 人气:0#! conding:utf-8 __author__ = "hotpot" __date__ = "2017/10/28 9:40" def return_edge(matrix, start_col, end_col, start_row, end_row): if start_row == end_row: return matrix[start_row][start_col:end_col+1] elif end_col ==start_col: res = [] for i in range(start_row,end_row+1): res.append(matrix[i][end_col]) return res else: res2 =[] res3 =[] res4=[] res1 = matrix[start_row][start_col:end_col+1] for i in range(start_row+1,end_row+1): res2.append(matrix[i][end_col]) for i in range(end_col-1,start_col-1,-1): res3.append(matrix[end_row][i]) for i in range(end_row-1,start_row,-1): res4.append(matrix[i][start_row]) res1.extend(res2) res1.extend(res3) res1.extend(res4) return res1 def spiralOrder( matrix): if matrix: row = len(matrix)-1 col = len(matrix[0])-1 start_row = 0 start_col = 0 end_row = row end_col = col res =[] while start_col<=end_col and start_row <= end_row: res.extend(return_edge(matrix,start_col,end_col , start_row ,end_row)) start_col+=1 end_col-=1 start_row+=1 end_row-=1 return res else: return matrix if __name__ == '__main__': matrix = [[0 for i in range(3) ]for j in range(3)] num=1 for m in range(len(matrix)): for n in range(len(matrix[0])): matrix[m][n]=num num+=1 print(spiralOrder( matrix))
加载全部内容