Leetcode 54. Spiral Matrix
不定期更新leetcode解题java答案。
采用pick one的方式选择题目。
题目的大致意思是绕圈输出矩阵数值,将每一圈视为一个循环,对输出停止的4种条件进行判断即可。
4种停止的方式分别为,向右继续输出时,数值已输出;向下继续输出时,数值已输出;向左继续输出时,数值已输出;向上继续输出时,数值已输出。
将具体数值临界值判断清楚即可,代码如下:
1 public class Solution { 2 public List<Integer> spiralOrder(int[][] matrix) { 3 List<Integer> result = new ArrayList<Integer>(); 4 if(matrix.length == 0) 5 return result; 6 int start_x = 0, start_y = 0, end_x = matrix[0].length, end_y = matrix.length; 7 while(start_x < end_x){ 8 //right 9 for(int i = start_x; i < end_x; i++) 10 result.add(matrix[start_y][i]); 11 12 //down 13 if(end_y - start_y == 1) 14 break; 15 for(int i = start_y + 1; i < end_y; i++) 16 result.add(matrix[i][end_x - 1]); 17 18 //left 19 if(end_x - start_x == 1) 20 break; 21 for(int i = --end_x - 1; i >= start_x; i--) 22 result.add(matrix[end_y - 1][i]); 23 24 //up 25 if(end_y - start_y == 2) 26 break; 27 for(int i = --end_y - 1; i > start_y; i--) 28 result.add(matrix[i][start_x]); 29 start_x++; 30 start_y++; 31 } 32 return result; 33 } 34 }