题目描述
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
Java代码实现
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45import java.util.ArrayList; public class Solution { ArrayList<Integer> res = new ArrayList<>(); public ArrayList<Integer> printMatrix(int [][] matrix) { int row = matrix.length; int col = matrix[0].length; if(row == 0 || col == 0) return res; //定义上下界、左右界 int up = 0, down = row - 1, left = 0, right = col - 1; //循环转圈,每转完一圈要判断上下界、左右界的关系,否则转圈结束 while(up <= down && left <= right){ //从左到右遍历,结束后更新上界值 for(int i = left; i <= right; i++){ res.add(matrix[up][i]); } up++; //从上到下遍历,结束后更新右界值 for(int i = up; i <= down; i++){ res.add(matrix[i][right]); } right--; //需提前判断上下界的关系,防止重复遍历遍历过的元素(这里是指第一步从左到右遍历过的元素,即单行情况) //从右到左遍历,结束后更新下界值 if(up <= down){ for(int i = right; i >= left; i--){ res.add(matrix[down][i]); } } down--; //需提前判断上下界的关系,防止重复遍历遍历过的元素(这里是指第二步从上到下遍历过的元素,即单列情况) //从下到上遍历,结束后更新左界值 if(left <= right){ for(int i = down; i >= up; i--){ res.add(matrix[i][left]); } } left++; } return res; } }
最后
以上就是专注草莓最近收集整理的关于剑指offer:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。的全部内容,更多相关剑指offer:输入一个矩阵,按照从外向里以顺时针内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复