劍指 Offer 29 順時針列印矩陣

2021-10-14 06:22:01 字數 2147 閱讀 1186

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

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

package offer;

/*** @author wsharkcoder

* @date 2021/1/7 22:14

* @classname spiralorder

* 問題:

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

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

*/public class printmatrixclockcircle

//行數 列數

int rownum = matrix.length, colnum = matrix[0].length;

//結果

int result = new int[rownum * colnum];

//方向 右 下 左 上

int dir = new int, , , };

//是否訪問

boolean visited = new boolean[rownum][colnum];

int index = 0, i = 0, j = 0, k = 0;

while (index < rownum * colnum)

i += dir[k][0];

j += dir[k][1];

}return result;

}/**

* 限界法 判斷是否超越界限

* @param matrix

* @return

*/public static int spiralorderx(int matrix)

//行數 列數

int rownum = matrix.length, colnum = matrix[0].length;

//結果

int result = new int[rownum * colnum];

//方向 右 下 左 上

int dir = new int, , , };

int index = 0, i = 0, j = 0, p = 1;

while (index < rownum * colnum)

i += dir[k%4][0];

j += dir[k%4][1];

}p++;

}return result;

}public static void main(string args) ,

,});

// spiralorderx(new int,

// ,

//

// });

// spiralorderx(new int,

//

// });

}}

劍指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 解題過...