29 順時針列印矩陣

2021-10-22 01:57:17 字數 1460 閱讀 5653

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

示例 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,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...