一、題目
輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如:如果輸入如下矩陣:
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...