《剑指offer》—— 19. 顺时针打印矩阵(Java)
题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
}
}
参考思路:
控制好边界和结束条件,按顺时针遍历数组并存储即可。
参考实现:
import java.util.ArrayList;
public class Solution {
public ArrayList<Integer> printMatrix(int [][] matrix) {
ArrayList<Integer> list = new ArrayList<>();
int up = 0;
int down = matrix.length-1;
int left = 0;
int right = matrix[0].length-1;
while (true){
//上
for(int col=left; col<=right; col++){
list.add(matrix[up][col]);
}
//向下靠近
up++;
//判断是否越界
if (up > down){
break;
}
//右
for(int row=up; row<=down;row++){
list.add(matrix[row][right]);
}
//向左靠近
right--;
if (right < left){
break;
}
for(int col=right;col>=left;col--){
list.add(matrix[down][col]);
}
down--;
if(down < up){
break;
}
for(int row=down; row>=up; row--){
list.add(matrix[row][left]);
}
left++;
if(left > right){
break;
}
}
return list;
}
}
看完之后,如果还有什么不懂的,可以在评论区留言,会及时回答更新。
这里是猿兄,为你分享程序员的世界。
非常感谢各位大佬们能看到这里,如果觉得文章还不错的话,
求点赞👍 求关注💗 求分享👬求评论📝
这些对猿兄来说真的 非常有用!!!
注: 如果猿兄这篇博客有任何错误和建议,欢迎大家留言,不胜感激!