矩阵按对角线打印---python
时间:2020-03-11
本文章向大家介绍矩阵按对角线打印---python,主要包括矩阵按对角线打印---python使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
将一个矩阵(二维数组)按对角线向右进行打印。(搜了一下发现好像是美团某次面试要求半小时手撕的题)
Example:
Input:
[
[1,2,3,4],
[5,1,2,3],
[9,5,1,2]
]
Output:
[[4],
[3, 3],
[2, 2, 2],
[1, 1, 1],
[5, 5],
[9]]
class Solution(): def print_matix(self,list): print(list) rows = len(list) cols = len(list[0]) result = [] for k in range(2*cols-1): # 共输出 cols * 2 - 1 行 diff = cols - k - 1 # 每一行的差 for i in range(cols): # 数组中每一个值的下标范围是0到cols for j in range(cols): if j-i == diff: print(list[i][j]) result.append(list[i][j]) print() print(result) return result def diagonal_right(self,matrix): if not matrix: return [] row = len(matrix) col = len(matrix[0]) col2 = col result = [] for i in range(row): for j in range(col2 - 1, -1, -1): # j倒序遍历 lst = [] i1, j1 = i, j # i1,j1用于方便同一对角线元素的添加,否则改变i,j影响开头元素的选择 while i1 <= row - 1 and j1 <= col - 1: lst.append(matrix[i1][j1]) j1 += 1 i1 += 1 result.append(lst) if i == 0 and j == 0: # 当遍历完(0,0)开头的一条对角线后,让j固定为0 col2 = 1 return ('the result is: %s' % result, 'end') if __name__ == '__main__': list = [[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] solution = Solution() solution.print_matix(list) result = solution.diagonal_right(list) print(result)
原文地址:https://www.cnblogs.com/turningli/p/12460534.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ubuntu16.04.5LTS安装SVN的过程
- CentOS6.5与CentOS7 ssh修改默认端口号的方法
- CentOS8 配置本地yum源的详细教程
- linux查找大文件指定内容的实现方法
- linux服务器上安装jdk的两种方法(yum+下载包)
- ubuntu中编写shell脚本开机自动启动(推荐)
- linux下使用 CentOS7安装jdk1.7
- 安装CentOS 6.x报错"Disk sda contains BIOS RAID metadata"解决方法
- 重启宝塔面板后提示-ModuleNotFoundError: No module named 'geventwebsocket'
- Linux动态启用/禁用超线程技术的方法详解
- 解决Ubuntu下使用linuxdeployqt打包Qt程序问题
- 使用python获取基金历史数据
- 如何在CentOS8上安装和配置Postfix邮件服务器的方法示例
- Linux下设置Vim编辑器里Tab的长度行号
- Centos定制rpm包、搭建yum仓库的教程