题目:
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。
示例 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 edu.LeetCode.二;
public class 顺时针打印矩阵 {
public static int[] spiralOrder(int[][] matrix){
int m = matrix.length;//矩阵的行
if(m == 0){//防止当输入矩阵为空的时候报空指针异常
return new int[]{};
}
int n = matrix[0].length;//矩阵的列
int[] arr = new int[m*n];//定义一个数组存放遍历举证打印出来的数字
int top = 0;
int bottom = m - 1;
int left = 0;
int right = n - 1;
int count = 0;
while(top <= bottom && left <= right){
//从左向右遍历
for(int i = left ; i <= right ; i++){
arr[count++] = matrix[top][i];
}
//从上向下遍历
top++;
for(int i = top ; i <= bottom ; i++){
arr[count++] = matrix[i][right];
}
//从右向左遍历
right--;
for(int i = right ; i >= left && top <= bottom ; i--){
arr[count++] = matrix[bottom][i];
}
//从下向上遍历;
bottom--;
for(int i = bottom ; i >= top && left <= right;i--) {
arr[count++] = matrix[i][left];
}
left++;
}
for(int i = 0 ; i < arr.length ; i++){
System.out.print(arr[i] + " ");
}
return arr;
}
public static void main(String[] args) {
// int[][] matrix={{1,2,3},{4,5,6}, {7,8,9}};
// int[][] matrix={{1,2,3,4},{5,6,7,8}, {9,10,11,12}};
int[][] matrix = {};
spiralOrder((matrix));
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/shun-shi-zhen-da-yin-ju-zhen-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。