劍指 Offer 29 順時針列印矩陣

2021-10-18 21:16:12 字數 1013 閱讀 9683

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。

示例 1:

輸入:matrix = [[1,2,3],[4,5,6],[7,8,9]]

輸出:[1,2,3,6,9,8,7,4,5]

示例 2:

輸入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]

輸出:[1,2,3,4,8,12,11,10,9,5,6,7]

限制:

0 <= matrix.length <= 100

0 <= matrix[i].length <= 100

模擬上下左右

利用dis限制走過的位置不再走(這裡其實可以通過多加幾個變數來控制每次的步數來實現,但我懶得寫就直接存標記陣列)

class

solution

;

int n=matrix.

size()

; int m=matrix[0]

.size()

; int dis[n]

[m];

memset

(dis,0,

sizeof

(dis));

dis[0]

[0]=

1;vectorve;

int x=

0,y=0;

while(1

)while

(x1&&dis[x+1]

[y]==0)

while

(y>

0&&dis[x]

[y-1]==

0)while

(x>

0&&dis[x-1]

[y]==0)

if(judge==0)

break;}

ve.push_back

(matrix[x]

[y])

;return ve;}}

;

劍指offer 29 順時針列印矩陣

分析 每次列印一圈,用start來確定起始列印的點,從0開始,每次增加1,中點是最後列印的乙個點,因此迴圈條件是start2 columns start2 rows,如果用start columns 2 start rows 2會在5 2的時候出錯。列印一圈數字有四個方向 從左到右 從上到下 前提是...

劍指 Offer 29 順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。示例 1 輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 示例 2 輸入 matrix 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11,10,9...

劍指Offer 29 順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 輸入 matrix 1,2,3,4 5,6,7,8 9,10,11,12 輸出 1,2,3,4,8,12,11,10,9,5,6,7 解題過...