【剑指offer】面试题 29:顺时针打印矩阵
来源:互联网 发布:js如何理解面向对象 编辑:程序博客网 时间:2024/05/19 02:29
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,
例如,如果输入如下矩阵:
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.
时间限制:1秒 空间限制:32768K 热度指数:128924
思路
顺时针打印就是按圈数循环打印,一圈包含两行或者两列,
在打印的时候会出现某一圈中只包含一行,
要判断从左向右打印和从右向左打印的时候是否会出现重复打印,
同样只包含一列时,要判断从上向下打印和从下向上打印的时候
是否会出现重复打印的情况
参考代码
# -*- coding:utf-8 -*-class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # write code here printArr = [] if matrix == None: return if matrix == []: return [] start = 0 # 每次循环时起始点 rows = len(matrix) # 列数 columns = len(matrix[0]) # 行数 while columns > 2 * start and rows > 2 * start: endX = columns - 1 - start endY = rows - 1 - start # 从左到右将数字存入printArr for i in range(start, endX+1): number = matrix[start][i] printArr.append(number) # 从上到下将数字存入printArr if start < endY: for i in range(start+1, endY+1): number = matrix[i][endX] printArr.append(number) # 从右到左将数字存入printArr if start < endX and start < endY: for i in range(endX-1, start-1, -1): number = matrix[endY][i] printArr.append(number) # 从下到上将数字存入printArr if start < endX and start < endY-1: for i in range(endY-1, start, -1): number = matrix[i][start] printArr.append(number) start += 1 return printArr
阅读全文
0 0
- 《剑指offer》面试题:顺时针打印矩阵
- 剑指offer面试题 顺时针打印矩阵
- 顺时针打印矩阵(剑指offer面试题29)
- 【剑指offer】面试题 29:顺时针打印矩阵
- 剑指offer--面试题29:顺时针打印矩阵
- 【剑指offer】面试题29:顺时针打印矩阵
- 剑指offer面试题20顺时针打印矩阵
- [剑指offer][面试题20]顺时针打印矩阵
- 剑指offer 面试题20:顺时针打印矩阵
- 《剑指offer》面试题20顺时针打印矩阵
- 【剑指offer】面试题20:顺时针打印矩阵
- 剑指offer 面试题20 顺时针打印矩阵
- 剑指Offer:面试题20 顺时针打印矩阵
- 《剑指Offer》面试题20:顺时针打印矩阵
- 剑指offer 面试题20—顺时针打印矩阵
- 《剑指Offer》学习笔记--面试题20:顺时针打印矩阵
- 剑指offer--面试题20:顺时针打印矩阵--Java实现
- 【剑指Offer学习】【面试题20 : 顺时针打印矩阵】
- 进程与线程的区分
- 吐血推荐: 深入理解java 虚拟机
- js改变背景颜色有感
- 【POJ1823】Hotel
- java项目01 管家婆项目简单的增删改查
- 【剑指offer】面试题 29:顺时针打印矩阵
- 好开心 饭点前又AC一题
- Java 多线程(一)
- PAT 1036跟奥巴马一起编程
- ios对于fixed属性不兼容的解决方案
- 1.Eclipse搭建JFinal坏境(Jetty运行)
- 生僻姓(多音字姓)
- WebView中Settings积累
- 矩阵快速幂(CRB and Puzzle,HDU 5411)