算法設計系列-07

題目

給定一個整形矩陣, 請按照轉圈的方式進行打印

例如矩陣如下:

算法設計系列-07

則,打印結果為: 1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10

要求空間複雜度為O(1)

思路分析

第一反應, 將行號和列號變化的規律找到, 然後按照規律進行打印, 但是這種方式我沒有采用, 並不是不能實現, 是可以實現的, 只是實現起來過於麻煩.

現在換一種思路, 如果, 我們已經有了左上角與右下角兩個點, 那麼這兩個點就可以確定一個矩陣, 我們要打印這個矩陣的左上角順時針轉一圈的元素, 這個方法是很好實現的, 就像下圖:

算法設計系列-07

一圈打印完後, 我們將這兩個點向中間逼近, 繼續打印, 哎, 這不就成了麼!

轉圈打印的函數實現如下:

算法設計系列-07

打印的函數有了, 那剩下的就是將兩點逐漸向中心逼近了, 函數實現:

算法設計系列-07


分享到:


相關文章: