摘要:题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵则依次打印出数字题解这个题目就是正常的模拟就好。此外还要注意判断一下矩阵是的情况。
题目
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.
题解这个题目就是正常的模拟就好。
定义四个变量。
top: 表示最上面的行;
bottom:表示最小面的行;
left:表示最左边的列;
right: 表示最右边的列;
左 -> 右,这个时候相当于最上面这一行就打印完了,这个时候最上面的行top要++;
右 -> 下,这个时候相当于最右边这一列就打印完了,这个时候最右边的列right要--;
右 -> 左,这个时候相当于最下边这一行就打印完了,这个时候最下边的行bottom要--;
下 -> 上,这个时候相当于最左边这一列就打印完了,这个时候最左边的列left要--;
但是每一步完成之后可能都会遇到边界条件:
1 2 3 4
比如上面这个case,top++之后就应该跳出循环,不应该继续走了。
1 2 3 4
再比如上面这个case,走到right--之后就应该跳出循环,不应该继续走了。
此外还要注意判断一下矩阵是null的情况。
import java.util.ArrayList; public class Solution { public ArrayListprintMatrix(int [][] matrix) { if (matrix == null) return new ArrayList(); int top = 0; int bottom = matrix.length - 1; int left = 0; int right = matrix[0].length - 1; ArrayList result = new ArrayList(); while (top <= bottom && left <= right) { for (int i = left; i <= right; i++) { result.add(matrix[top][i]); } top++; if (top > bottom) { break; } for (int i = top; i <= bottom; i++) { result.add(matrix[i][right]); } right--; if (left > right) { break; } for (int i = right; i >= left; i--) { result.add(matrix[bottom][i]); } bottom--; if (top > bottom) { break; } for (int i = bottom; i >= top; i--) { result.add(matrix[i][left]); } left++; if (left > right) { break; } } return result; } }
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72721.html
摘要:有效三角形的个数双指针最暴力的方法应该是三重循环枚举三个数字。总结本题和三数之和很像,都是三个数加和为某一个值。所以我们可以使用归并排序来解决这个问题。注意因为归并排序需要递归,所以空间复杂度为 ...
摘要:题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵则依次打印出数字解题传入的参数为或者不是数组或者是空数组传入的是一维数组 题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字 1...
摘要:导航小助手剑指从尾到头打印链表题目详情解题思路源代码总结剑指从尾到头打印链表题目详情输入一个链表的头节点,从尾到头反过来返回每个节点的值用数组返回。时间复杂度方法先反转链表并求长度,在将反转后的链表数据拷贝至数组中。 ...
摘要:例如,当为时,机器人能够进入方格,因为。请问该机器人能够达到多少个格子分析这题和上题剑指矩阵中的路径属于同一类型的题目。 题目 {% cq %} 地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 1...
阅读 3309·2023-04-25 19:42
阅读 1328·2021-11-23 10:11
阅读 2251·2021-11-16 11:51
阅读 1589·2019-08-30 15:54
阅读 2035·2019-08-29 18:44
阅读 1608·2019-08-23 18:24
阅读 493·2019-08-23 17:52
阅读 1763·2019-08-23 15:33