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))
  • 相关阅读:
    axios的封装
    单行和多行文本溢出省略号显示!!!
    vue2源码-响应式处理(学习笔记)-2
    vue2源码-rollup的配置(学习笔记)-1
    js的垃圾回收机制
    立即执行函数
    闭包笔记
    vue3.0的CompositionAPI
    Create gym environment with your own xml file and training it using her of baseline
    Brief introduction to mujoco or gym modeling using xml
  • 原文地址:https://www.cnblogs.com/bob-jianfeng/p/11393829.html
Copyright © 2011-2022 走看看