輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。
示例 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]
偽**
//空值處理
if(matrix.length-
>0)
row:matrix.length
col:matrix[0]
.lengthl:0
//r是列數減1
r:col-1t:
0//b是行數減1
b:row-
1while
(true
)
class
solution
//行數
int row=matrix.length;
//列數
int col=matrix[0]
.length;
//上下左右邊界
int l=0;
//列數減1
int r=col-1;
int t=0;
//行數減1
int b=row-1;
//結果陣列
int[
] res=
newint
[row*col]
;int index=0;
while
(true
)//上下移
t++;//越界判斷
if(t>b)
//從上向下列印
for(
int i=t;i<=b;i++
)//右左移
r--;//越界判斷
if(r
//從右向左列印
for(
int i=r;i>=l;i--
)//下上移
b--;//越界判斷
if(b
for(
int i=b;i>=t;i--
)//左右移
l++;//越界判斷
if(l>r)
}return res;
}}
複雜度分析**時間複雜度:**o(mn):m,n分別為矩陣行數和列數**空間複雜度分析:**o(1):四個邊界l,r,t,b使用常數大小的額外空間(res為必須使用的空間)
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,5...
順時針列印矩陣
輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...