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 }

 

posted @ 2016-06-05 11:29  zslhq~  阅读(205)  评论(0编辑  收藏  举报