python(leetcode)498. 对角线遍历
这题难度中等,记录下思路
第一个会超时,
第二个:思想是按斜对角线行进行右下左上交替遍历,
def traverse(matrix):
n=len(matrix)-1
m=len(matrix[0])-1
result=[]
for i in range(m+n+1):
if(i % 2 == 0):
for j in range(i, -1, -1):
x=j
y=i-x
if x <= n and y <= m:
result.append(matrix[x][y])
# elif y > m:
# break
else:
continue
else:
for j in range(i, -1, -1):
y=j
x=i-y
if x <= n and y <= m:
result.append(matrix[x][y])
# elif x > n:
# break
else:
continue
return result if __name__ == '__main__':
ma=[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
print(traverse(ma))
11
def diagonial(matrix):
m=len(matrix)
n=len(matrix[0])
#思想是按斜对角线行进行遍历
#遍历的方向右下,左上交替进行
line=0
res=[]
tem=[]
is_sure=True
#对每一行进行循环 斜对角线有m+n-1条
while line<(m+n-1):
#设置起点
if(line<m):
x=line
y=0
else:
x=m-1
y=line-m-1
#每行循环几次
#因为都是从右上开始,所以设置条件x>0,y<n
while x>=0 and y <n:
# 存储斜行的元素
tem.append(matrix[x][y])
x-=1
y+=1
#如果是左下开始,则反向添加
if(is_sure):
tem.reverse()
for num in tem:
res.append(num)
line+=1
return res if __name__ == '__main__':
matrix=[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
print(diagonial(matrix))
python(leetcode)498. 对角线遍历的更多相关文章
- Java实现 LeetCode 498 对角线遍历
498. 对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ ...
- Leetcode 498.对角线遍历
对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ 1, 2, 3 ], [ 4, 5, ...
- LeetCode:对角线遍历【498】
LeetCode:对角线遍历[498] 题目描述 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. 示例: 输入: [ [ ...
- 498. (leetcode)对角线遍历
498. 对角线遍历 根据题目的图像看,主要有两种走法,第一种是向右上(顺时针方向),第二种是向左下(逆时针)走 我们设 x ,y初始为0,分别对应横纵坐标 现在分析右上(0,2) 为例:(注意右上的 ...
- Leetcode 498:对角线遍历Diagonal Traverse(python3、java)
对角线遍历 给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示. Given a matrix of M x N elemen ...
- [LeetCode] Diagonal Traverse 对角线遍历
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ...
- [Swift]LeetCode498. 对角线遍历 | Diagonal Traverse
Given a matrix of M x N elements (M rows, N columns), return all elements of the matrix in diagonal ...
- Python os.walk文件遍历用法【转】
python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使用os.walk,首先要载入该函数 可以使用以下两种方法 import os ...
- python实现dict版图遍历
python实现dict版图遍历的示例. 代码: #_*_coding:utf_8_import sysimport osclass Graph(): def __init__(self, V, E) ...
随机推荐
- nltk词性标注
将词汇按它们的词性(parts-of-speech,POS)分类以及相应的标注它们的过程被称为词性标注(part-of-speech tagging, POS tagging)或干脆简称标注.词性也称 ...
- 字符串模式匹配——KMP算法
KMP算法匹配字符串 朴素匹配算法 字符串的模式匹配的方法刚开始是朴素匹配算法,也就是经常说的暴力匹配,说白了就是用子串去和父串一个一个匹配,从父串的第一个字符开始匹配,如果匹配到某一个失配了,就 ...
- mysql 写入中文乱码
今天从另一个系统往mysql数据库写入数据,发现中文变成了????? 检查数据库的设置 ,server对应字符集是latinl 调整mysql参数配置,配置文件目录/etc/mysql/mysql.c ...
- Scrum Framework, Process and Story Point
Scrum Framework Roles Ceremonies Artifacts Scrum Master Sprint Planning Product Backlog Product Owne ...
- ICMP和重定向攻击
目录 ICMP数据报格式 smurf攻击 ICMP重定向攻击 基于libpcap的sniffer raw socket 定义包头 解析数据包 重定向 ICMP数据报格式 https://zhuanla ...
- windows下安装了2个python,如何下载模块到不同的python中
修改python名称即可,修改Scrpit下的pip名称即可,用不同的名称打开就行 https://www.cnblogs.com/legend-123/p/11195706.html
- Error: Unable to establish IPMI v2 / RMCP+ session
是这样的,需要ipmi控制器,然后一直报错这个: [root@localhost ~]# sudo ipmitool -I lanplus -H 192.168.87.12 -U root -P pa ...
- Kafka 的No kafka server to stop报错处理
使用kafka-server-stop.sh命令关闭kafka服务,发现无法删除,报错如下图No kafka server to stop 下面修改kafka-server-stop.sh将 PIDS ...
- 2019/12/10学习内容摘要(Linux文件和目录管理)
1.绝对路径和相对路径 *绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql *相对路径:路径的写法不是由根目录 / 写起的,例如 首先用户进入到 /home,然后 ...
- 集合系列 List(五):Stack
Stack 是先进后出的栈结构,其并不直接实现具体的逻辑,而是通过继承 Vector 类,调用 Vector 类的方法实现. public class Stack<E> extends V ...