Python :顺时针打印矩阵
来源:互联网 发布:部落实验室升级数据 编辑:程序博客网 时间:2024/05/18 16:18
牛客网上的剑指 offer的在线编程:
题目描述:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.
方法一:每次取二维列表的第一项,然后删除第一项,逆时针旋转二维列表,重复上述操作
# -*- coding:utf-8 -*-'''顺时针打印矩阵题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.'''class Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): if len(matrix) == 0: return [] res = [] number = len(matrix) * len(matrix[0]) res.extend(matrix[0]) while len(res) < number: matrix.pop(0) matrix = self.turn(matrix) res.extend(matrix[0]) return res def turn(self, mat): if len(mat) == 0: return turned_lst = [([0] * len(mat)) for i in range(len(mat[0]))] for i in range(len(mat)): for j in range(len(mat[0])): turned_lst[j][i] = mat[i][len(mat[0]) - 1 - j] return turned_lst
方法二:
# -*- coding:utf-8 -*-import numpy as npclass Solution: # matrix类型为二维列表,需要返回列表 def printMatrix(self, matrix): # write code here all = [] x, y = matrix.shape print x, y print matrix for k in range(x + y): all.append(matrix[0]) b = matrix[1:, ] m, n = b.shape print m, n c = np.arange(m * n).reshape((n, m)) for i in range(m): for j in range(n): c[j][i] = b[i][n - 1 - j] matrix = c print matrix print len(matrix) if len(matrix) == 1: all.append(matrix[0]) break return all
阅读全文
0 0
- Python :顺时针打印矩阵
- 20顺时针打印矩阵python
- 【Codewars-snail】顺时针打印矩阵(python)
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 顺时针打印矩阵
- 矩阵顺时针打印
- 顺时针打印矩阵
- 顺时针打印矩阵[算法]
- 顺时针打印矩阵
- 顺时针打印矩阵
- MongoDB常用操作(二)
- 优先队列之左式堆(JAVA实现)
- LeetCode 523. Continuous Subarray Sum
- 常用网址导航记录
- 写作建议
- Python :顺时针打印矩阵
- 51nod1577 异或凑数
- 把数字转换成中文
- 数据库外连接(左、右、全)、内连接
- Mysql数据乱码完美解答
- Python :删除链表中重复的节点
- win32(7)--文件操作
- java语言基础(68)——集合框架(泛型概述和使用)
- 《Unix环境高级编程》 总结 (一)