劍指 Offer 29 順時針列印矩陣

2021-10-21 02:13:18 字數 1054 閱讀 6632

順時針列印矩陣的順序是 「從左向右、從上向下、從右向左、從下向上」 迴圈。因此,考慮設定矩陣的「左、上、右、下」四個邊界,模擬以上矩陣遍歷順序。

主要流程:

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

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

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

class

solution;}

int left =0;

int right = matrix[0]

.length -1;

int up =0;

int down = matrix.length -1;

int x =0;

//res的下標

int[

] res =

newint

[matrix.length * matrix[0]

.length]

;while

(true

) up++

;//遍歷完了,邊界收縮,看看是否越界,也就是是否列印完了

if(up > down)

//從上往下

for(

int i = up; i <= down; i++

) right--;if

(right < left)

//從右往左

for(

int i = right; i >= left; i--

) down--;if

(down < up)

//從下往上

for(

int i = down; i >= up; i--

) left++;if

(left > right)

}return res;

}}

劍指offer 29 順時針列印矩陣

分析 每次列印一圈,用start來確定起始列印的點,從0開始,每次增加1,中點是最後列印的乙個點,因此迴圈條件是start2 columns start2 rows,如果用start columns 2 start rows 2會在5 2的時候出錯。列印一圈數字有四個方向 從左到右 從上到下 前提是...

劍指 Offer 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...

劍指Offer 29 順時針列印矩陣

輸入乙個矩陣,按照從外向裡以順時針的順序依次列印出每乙個數字。輸入 matrix 1,2,3 4,5,6 7,8,9 輸出 1,2,3,6,9,8,7,4,5 輸入 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 解題過...