Hello Java.
题目描述:
给定一个包含m*n个元素的矩阵(m行,n列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
示例:
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]
输出:[1,2,3,6,9,8,7,4,5]
示例:
输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]
题目链接:
https://leetcode-cn.com/problems/spiral-matrix/
代码:
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> result = new ArrayList<>();
if (matrix.length == 0) return result; /* 当参数matrix中内容为空时 */
int t = 0, b = matrix.length - 1, l = 0, r = matrix[0].length - 1; /* 上下左右边界值 */
while (true) {
for (int i = l; i <= r; i++) result.add(matrix[t][i]); /* 向右移动 */
if (++ t > b) break; /* 重新设定上边界 */
for (int i = t; i <= b; i++) result.add(matrix[i][r]); /* 向下移动 */
if (-- r < l) break; /* 重新设定右边界 */
for (int i = r; i >= l; i--) result.add(matrix[b][i]); /* 向左移动 */
if (-- b < t) break; /* 重新设定下边界 */
for (int i = b; i >= t; i--) result.add(matrix[i][l]); /* 向上移动 */
if (++ l > r) break; /* 重新设定左边界 */
}
return result;
}
}
待续ヾ(=・ω・=)o