题解 | #螺旋矩阵#

螺旋矩阵

http://www.nowcoder.com/practice/7edf70f2d29c4b599693dc3aaeea1d31

import java.util.*; public class Solution { public ArrayList spiralOrder(int[][] matrix) { ArrayList list = new ArrayList<>(); if(matrix.length == 0) return list; cycle(matrix, 0, 0, matrix.length - 1, matrix[0].length - 1, list); return list; } //环形遍历,采用左闭右开 public void cycle(int[][] matrix, int x1, int y1, int x2, int y2, ArrayList list) { if (x1 > x2 || y1 > y2) { return; } if (x1 == x2) { for (int i = y1; i <= y2; i++) { list.add(matrix[x1][i]); } return; } if (y1 == y2) { for (int i = x1; i <= x2; i++) { list.add(matrix[i][y1]); } return; } for (int i = y1; i < y2; i++) { list.add(matrix[x1][i]); } for (int i = x1; i < x2; i++) { list.add(matrix[i][y2]); } for (int i = y2; i > y1; i--) { list.add(matrix[x2][i]); } for (int i = x2; i > x1; i--) { list.add(matrix[i][y1]); } cycle(matrix, x1 + 1, y1 + 1, x2 - 1, y2 - 1, list);

}

}

全部评论

相关推荐

04-14 20:10
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务