剑指Offer--19.顺时针打印矩阵
2017-09-19 22:46
381 查看
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
python代码:
# -*- coding:utf-8 -*- class Solution: def __init__(self): self.l = [] # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # write code here self.matrix = matrix row_start = 0 row_end = len(matrix) - 1 col_start = 0 col_end = len(matrix[0]) - 1 self.go_with_one_roll(row_start,row_end,col_start,col_end) return self.l def go_with_one_roll(self,row_start,row_end,col_start,col_end): if row_start == row_end: for i in xrange(col_start,col_end+1): self.l.append(self.matrix[row_start][i]) elif col_start == col_end: for i in xrange(row_start,row_end+1): self.l.append(self.matrix[i][col_start]) else: for i in xrange(col_start,col_end): self.l.append(self.matrix[row_start][i]) for j in xrange(row_start,row_end): self.l.append(self.matrix[j][col_end]) for k in xrange(col_end,col_start,-1): self.l.append(self.matrix[row_end][k]) for m in xrange(row_end,row_start,-1): self.l.append(self.matrix[m][col_start]) if row_end - row_start > 1 and col_end - col_start > 1: self.go_with_one_roll(row_start+1,row_end-1,col_start+1,col_end-1)
解析:
本体要考虑到只有一行或者只有一列的情况,如果不是这种情况的话,先打印第一行,然后打印最后一列,然后打印逆序最后一行,然后逆序打印最后一列,把剩余的矩形带入递归循环。
相关文章推荐
- 剑指Offer_19_顺时针打印矩阵
- 【剑指offer】19顺时针打印矩阵
- 剑指offer 19 顺时针打印矩阵
- 剑指Offer—19—顺时针打印矩阵
- [剑指Offer] 19.顺时针打印矩阵
- 剑指Offer——(19)顺时针打印矩阵
- 牛客网-剑指offer-19-顺时针打印矩阵
- 剑指offer——19.顺时针打印矩阵
- 剑指offer_19_顺时针打印矩阵
- 剑指offer:顺时针打印矩阵
- 剑指offer之顺时针打印矩阵
- 剑指offer-19.顺时针打印指针
- 剑指offer面试题:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字
- 【剑指Offer】面试题20:顺时针打印矩阵
- (C++)剑指offer-19:顺时针打印矩形(画图让抽象形象化)
- 剑指offer--->顺时针打印矩阵
- 剑指offer第十九题【顺时针打印矩阵】c++实现
- 剑指offer之面试题20:顺时针打印矩阵
- 剑指offer-面试题20:顺时针打印矩阵
- 剑指Offer:顺时针打印矩阵