劍指offer之順序列印陣列
阿新 • • 發佈:2020-11-09
## 演算法的要求為:
輸入一個矩陣,按照從外向裡以順時針的順序依次打印出每一個數字,例如,如果輸入如下4 X 4矩陣: 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.
## 解題的思路為:
要求順時針列印矩陣,列印的順序為
- 頂部一行(從左到右)
- 右側一列(從上到下)
- 底部一行(從右到左)
- 左側一行(從下到上)
具體的列印矩陣的順序為如下圖所示:
![](https://img2020.cnblogs.com/blog/2180780/202011/2180780-20201109204957016-631768858.png)
## 遇到的問題
我之前在寫這個演算法的過程中遇到了無法完整列印矩陣與陣列指標越界的問題,我在仔細思考過後,發現時沒有正確的處理在`while`迴圈過程中的跳出操作。
其實應該在每一個for迴圈過後都要進行判斷,判斷`left>right`或者`up>down`,如果為`true`,則說明矩陣已經列印完成,應該跳出`while`迴圈。
## 程式碼的實現
```java
import java.util.ArrayList;
public class Solution {
public A