29題 順時針列印矩陣

2021-10-16 22:44:47 字數 1416 閱讀 6178

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

示例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]

限制:

0 <= matrix.length <= 100

0 <= matrix[i].length <= 100

根據題目示例matrix=[[1,2,3],[4,5,6],[7,8,9]]的對應輸出[1,2,3,6,9,8,7,4,5]可以發現,順時針列印矩陣的順序是」從左向右、從上向下、從右向左、從下向上「

演算法流程:空值處理:當matrix為空時,直接返回空列表即可。

初始化:矩陣 左、右、上、下 四個邊界l,r,t,b,用於列印的結果列表res。

迴圈列印:「從左向右、從上向下、從右向左、從下向上」四個方向迴圈,每個方向列印中做以下三件事:

根據邊界列印,即將元素按順序新增至列表res尾部;

邊界向內收縮1(代表已被列印);

判斷是否列印完畢(邊界是否相遇),若列印完畢則跳出。

返回值:判斷是否列印完畢(邊界是否相遇),若列印完畢則跳出。

列印方向

1. 根據邊界列印

2. 邊界向內收縮

3. 是否列印完畢

從左向右

左邊界l,右邊界r

上邊界t加1

是否t>b

從上向下

上邊界t,下邊界b

右邊界r減1

是否l>r

從右向左

右邊界r,左邊界l

下邊界b減1

是否t>b

從下向上

下邊界b,上邊界t

左邊界l加1

是否l>r

class

solution

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...

順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。例如 如果輸入如下矩陣 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,然而實際去做的時候會發現,如果結構劃分的不好,會出現很多的迴圈,而且包括對各種...