順時針列印矩陣

2021-09-25 18:55:47 字數 1151 閱讀 1438

對於乙個矩陣,請設計乙個演算法從左上角(mat[0][0])開始,順時針列印矩陣元素。

給定int矩陣mat,以及它的維數nxm,請返回乙個陣列,陣列中的元素為矩陣元素的順時針輸出。

測試樣例:

[[1,2],[3,4]],2,2

返回:[1,2,4,3]

思路:定義四個指標left,right,low,high其中left從左往右走,right從右往左走,low從上往下走,high從下往上走

需要考慮兩種特殊情況:以以下兩個矩陣為例

[[1,2,3],[4,5,6],[7,8,9]]  第一圈列印完之後只剩下5,而5會在第乙個for迴圈中列印,此時low==high所以只有當low !=high時才會接著列印low的下一行

[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]    第一圈列印完之後只剩下5和8,而5會在第乙個for迴圈中列印,8會在第二個for訓話中列印,此時left==right所以只有當left!=right時才會接著列印left右邊的值

public class printer 

return res;

}//只有一列的情況

if (m == 1)

return res;

}int left = 0, right = m - 1, low = 0, high = n - 1;

while (left <= right && low <= high)

//從上往下

for (int i = low + 1; i <= high; i++)

//排除只剩下 一行的情況【因為如果只剩一行,那麼上邊第乙個for迴圈就已經列印過了】

//從右往左

if (high != low)

}//排除只剩下一列的情況【因為如果只剩一列,那麼上邊兩個for迴圈就已經列印過了】

//從下往上

if (right != left)

}left++;

right--;

low++;

high--;

}return res;

}}

順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 1 2 3 45 6 7 89 10 11 1213 14 15 16則依次列印出數字 1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。這個題目 寫的並不好感覺,好多if看著就煩,就是...

順時針列印矩陣

題目 給定乙個矩陣,從外向內順時針列印矩陣中的每乙個數字。例如 給定矩陣 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 輸出應該為 分析 這道題的意思非常直觀,給人的感覺也是so easy,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...

順時針列印矩陣

from 題目 輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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。網上聽說聽到包括autod...