Python 實現螺旋矩陣 II


假設我們有一個正整數 n,我們需要生成一個包含 n2 個元素的螺旋矩陣。例如,如果 n = 5,則矩陣將是 -

1234
1213145
1116156
10987

讓我們看看步驟 -

  • 設定 (row1, col1) := (0, 0) 和 (row2, col2) := (n, n),並建立一個名為 res 的矩陣,然後將其填充為 0,並設定 num := 1
  • 當 num <= n2 時,
    • 對於從 col1 到 col2 的 i,
      • res[row1, i] = num,將 num 加 1
      • 如果 num > n2,則中斷
    • 對於從 row1 + 1 到 row2 的 i,
      • res[i, col2-1] = num,將 num 加 1
      • 如果 num > n2,則中斷
    • 對於從 col2 – 2 到 col1 – 1 的 i,
      • res[row2 – 1, i] = num,將 num 加 1
      • 如果 num > n2,則中斷
    • 對於從 row2 – 2 到 row1 的 i,
      • res[i, col1] = num,將 num 加 1
    • 將 row1 加 1,將 row2 減 1,將 col1 加 1,並將 col2 減 1
  • 返回 res

讓我們看看以下實現以更好地理解 -

示例

即時演示

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]]

更新於: 2020年5月4日

2K+ 瀏覽量

開啟你的 職業生涯

完成課程獲得認證

開始學習
廣告

© . All rights reserved.