zoukankan      html  css  js  c++  java
  • python(leetcode)498. 对角线遍历

    这题难度中等,记录下思路

    第一个会超时,

    第二个:思想是按斜对角线行进行右下左上交替遍历,

     1 def traverse(matrix):
     2     n=len(matrix)-1
     3     m=len(matrix[0])-1
     4     result=[]
     5     for i in range(m+n+1):
     6             if(i % 2 == 0):
     7                 for j in range(i, -1, -1):
     8                     x=j
     9                     y=i-x
    10                     if x <= n and y <= m:
    11                         result.append(matrix[x][y])
    12                     # elif y > m:
    13                     #     break
    14                     else:
    15                         continue
    16             else:
    17                 for j in range(i, -1, -1):
    18                     y=j
    19                     x=i-y
    20                     if x <= n and y <= m:
    21                         result.append(matrix[x][y])
    22                     # elif x > n:
    23                     #     break
    24                     else:
    25                         continue
    26     return result
    27 
    28 if __name__ == '__main__':
    29     ma=[
    30  [ 1, 2, 3 ],
    31  [ 4, 5, 6 ],
    32  [ 7, 8, 9 ]
    33 ]
    34 print(traverse(ma))

    11

     1 def diagonial(matrix):
     2     m=len(matrix)
     3     n=len(matrix[0])
     4     #思想是按斜对角线行进行遍历
     5     #遍历的方向右下,左上交替进行
     6     line=0
     7     res=[]
     8     tem=[]
     9     is_sure=True
    10     #对每一行进行循环 斜对角线有m+n-1条
    11     while line<(m+n-1):
    12     #设置起点
    13         if(line<m):
    14             x=line
    15             y=0
    16         else:
    17             x=m-1
    18             y=line-m-1
    19         #每行循环几次
    20         #因为都是从右上开始,所以设置条件x>0,y<n
    21         while x>=0 and y <n:
    22             # 存储斜行的元素
    23             tem.append(matrix[x][y])
    24             x-=1
    25             y+=1
    26         #如果是左下开始,则反向添加
    27         if(is_sure):
    28             tem.reverse()
    29         for num in tem:
    30             res.append(num)
    31         line+=1
    32     return res
    33 
    34 
    35 if __name__ == '__main__':
    36     matrix=[
    37  [ 1, 2, 3 ],
    38  [ 4, 5, 6 ],
    39  [ 7, 8, 9 ]
    40 ]
    41     print(diagonial(matrix))
  • 相关阅读:
    JDBC批处理
    SQL注入攻击及其解决方法
    JDBC配置文件的开发形式
    JDBCUtils工具类
    利用JDBC技术,模拟用户登录的过程。查询用户表,用户名和密码是否匹配,是否存在。
    JDBC进行数据库的--增--删--改--案例----纯代码
    JDBC遍历结果集---ResultSet
    软件测试(十三)
    软件测试(十二)
    软件测试(十一)
  • 原文地址:https://www.cnblogs.com/bob-jianfeng/p/11393829.html
Copyright © 2011-2022 走看看