劍指offer 34 順時針列印矩陣

2021-09-26 11:05:00 字數 1007 閱讀 2461

一、題目

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

1, 2, 3, 4

5, 6, 7, 8

9, 10,11,12

13,14,15,16

則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.

二、大致思路

將結果存入陣列中,先從左到右,再從上到下,再從右到左,最後從下到上遍歷。

三、**實現

public arraylist

printmatrix

(int

matrix)

for(

int i = r1 +

1; i <= r2 ; i++)if

(r1 != r2)}if

(c1 != c2)}}

return ret;

}

四、分析1.從右向左 為啥要加上判斷   if(r1 != r2)

如上圖:這種情況 ,while迴圈執行一遍,再執行第二遍,當從左到右  7 --> 8 --> 9 完了以後,r1 = r2,如果此時沒有進行   if(r1 != r2) 判斷,就會 倒過來 遍歷 8 --> 7   了。

2.從下到上,為啥要加上判斷   if(c1 != c2)

如上圖:這種情況, while迴圈執行一遍,再執行第二遍,當從上到下  5 --> 8 --> 11 完了以後,c1 = c2,如果此時沒有進行   if(c1 != c2)判斷,就會 倒過來 遍歷 8 --> 5   了。

劍指offer 順時針列印矩陣

題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。分析 第一次看到這個題目的時候,覺得...

劍指offer 順時針列印矩陣

題目描述 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字,例如,如果輸入如下矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 則依次列印出數字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路 遞迴列印,處理好邊界就ok...

劍指offer 順時針列印矩陣

題目描述 給定乙個矩陣按照順時針順序從外到內的列印這個矩陣 解題思路 設定乙個全域性的方向向量dir其中的順序是向右,向下,向左,向上 每次給行加上乙個方向向量,當出現越界或者已經列印過的時候重新選擇方向 vectorprintmatrix vector matrix int d 0 int row...