面接問題29.時計回りにマトリックスを印刷(Java)(2 D配列遍歴、思考)
9060 ワード
1テーマ
行列を入力し、各数字を時計回りに順次印刷します.
例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注意:本題はメインステーション54題と同じ:https://leetcode-cn.com/problems/spiral-matrix/
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
2 Java
2.1メソッド1(2 D配列遍歴、思考)
行列を入力し、各数字を時計回りに順次印刷します.
例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注意:本題はメインステーション54題と同じ:https://leetcode-cn.com/problems/spiral-matrix/
ソース:力ボタン(LeetCode)リンク:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof著作権はインターネットの所有に帰属する.商業転載は公式の授権に連絡してください.非商業転載は出典を明記してください.
2 Java
2.1メソッド1(2 D配列遍歴、思考)
class Solution {
public int[] spiralOrder(int[][] matrix) {
if(matrix.length == 0 || matrix[0].length == 0) return new int[0];
int[] arr = new int[matrix.length * matrix[0].length];
int u = 0, d = matrix.length - 1, l = 0, r = matrix[0].length - 1;
// while ,
int index = 0;
while(u <= d && l <= r){
//
for(int j = l; j <= r; j++) arr[index++] = matrix[u][j];
if(index == arr.length) break;
u++;
//
for(int i = u; i <= d; i++) arr[index++] = matrix[i][r];
if(index == arr.length) break;
r--;
//
for(int j = r; j >= l; j--) arr[index++] = matrix[d][j];
if(index == arr.length) break;
d--;
//
for(int i = d; i >= u; i--) arr[index++] = matrix[i][l];
if(index == arr.length) break;
l++;
}
return arr;
}
}