Python中的Spiral Matrix II

假设我们有一个正整数n,我们必须生成一个具有n2个元素的螺旋矩阵的方阵。因此,如果n = 5,则矩阵将为-

1234
1213145
1116156
10987

让我们看看步骤-

  • 设置(row1,col1):=(0,0)和(row2,col2):=(n,n),创建一个称为res的矩阵,然后将其填充为0,然后设置num:= 1

  • 而num <= n2,

    • res [i,col1] = num,以num为1

    • res [row2 – 1,i] = num,以num为1

    • 如果num> n2,则中断

    • res [i,col2-1] = num,以num为1

    • 如果num> n2,则中断

    • res [row1,i] = num,以num为1

    • 如果num> n2,则中断

    • 对于在col1到col2范围内的i,

    • 对于第1行+1至第2行的i,

    • 因为我的范围是col2 – 2到col1 – 1

    • 对于范围2-2到范围1的i,

    • 将row1加1,将row2加1,将col1加1,并将col2加1

    • 返回资源

    让我们看下面的实现以更好地理解-

    示例

    class Solution(object):
       def generateMatrix(self, n):
          row1 = 0
          col1 = 0
          row2 = n
          col2 = n
          result = [ [0 for i in range(n)] for j in range(n)]
          num = 1
          while num<=n**2:
             for i in range(col1,col2):
                result[row1][i] = num
                num+=1
             if num > n**2:
                break
             for i in range(row1+1,row2):
                result[i][col2-1] = num
                num+=1
             if num > n**2:
                break
             for i in range(col2-2,col1-1,-1):
                result[row2-1][i] = num
                num+=1
             if num > n**2:
                break
             for i in range(row2-2,row1,-1):
                result[i][col1] = num
                num+=1
                row1+=1
                row2-=1
                col1+=1
                col2-=1
                #print(result)
          return result
    ob1 = Solution()
    print(ob1.generateMatrix(4))

    输入项

    4

    输出结果

    [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]]