美文网首页
斜着遍历二维数组——Python

斜着遍历二维数组——Python

作者: 烟花如雨旧故里 | 来源:发表于2020-12-10 17:20 被阅读0次

    今天刷题,碰到一个需要斜着遍历数组的题目,记录一下思路。
    1. 第一种情况

    对角线右斜向上
    遍历方向如图所示,输出结果应该是:[1,7,13,19,25,2,8,14,20,3,9,15,4,10,5]
    如果你一开始不知道怎么做,可以先把对应的index写出来找规律。用A表示数组。

    0 line:
    A[0][0], A[1][1], A[2][2], A[3][3], A[4][4]
    1 line
    A[0][1], A[1][2], A[2][3], A[3][4]
    2 line
    A[0][2], A[1][3], A[2][4]
    3 line
    A[0][3], A[1][4]
    4 line
    A[0][4]

    那么就可以看出,第一维坐标范围每次减少1,第二维坐标每次从当前line开始递增。用伪代码可能更好理解:

    n=size
    i=range(n), j=range(n-i), k=range(i,n)

    n = len(A)
    for i in range(n):
      k = i
      for j in range(n-i):
        print(A[j][k])
        k += 1
    

    2. 第二种情况

    对角线左斜向上
    输出结果结果应该是:[5,9,13,17,21,4,8,12,16,3,7,11,2,6,1]
    没有思路,就先把坐标列出来,找规律,代码如下:
    n = len(A)
    for i in range(n):
      k = n - i - 1
      for j in range(n-i):
        print(A[j][k])
        k -= 1
    

    好了,对于其他情况,只有耐下心来找出规律,代码很快就能写出来。

    相关文章

      网友评论

          本文标题:斜着遍历二维数组——Python

          本文链接:https://www.haomeiwen.com/subject/oenlgktx.html