leetcode------Spiral Matrix

标题: Spiral Matrix
通过率: 20.8%
难度:

中等

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]

You should return [1,2,3,6,9,8,7,4,5].

前面先做了通过率高的第一个版本,那个给的是2Dmatrix,做这个题目的时候我没有看清楚,直接按照2Dmatrix做的,所以一直出现问题。

需要注意的是本题是M*N,所以M和N中有可能为空,有可能有一个是1,那么再循环的时候就要认真去考虑了。

直接看代码了:

 1 public class Solution {
 2     public List<Integer> spiralOrder(int[][] matrix) {
 3         ArrayList<Integer> result=new ArrayList<Integer>();
 4                 if (matrix == null || matrix.length == 0 
 5             || matrix[0].length == 0) {
 6             return result;   
 7         }
 8         int m=matrix.length,n=matrix[0].length;
 9         int startX=0,startY=0,endX=m-1,endY=n-1;
10         while(startX<=endX&&startY<=endY){
11             result=getvalue(result,matrix,startX,endX,startY,endY);
12             startX++;
13             startY++;
14             endX--;
15             endY--;
16         }
17         return result;
18         
19     }
20     public ArrayList<Integer> getvalue(ArrayList<Integer> res,int[][] matrix,int startX,int endX,int startY,int endY){
21         if(startX==endX){
22             for(int i=startY;i<=endY;i++){
23             res.add(matrix[startX][i]);
24         }
25             return res;
26         }
27         else if(startY==endY){
28             for(int i=startX;i<=endX;i++){
29              res.add(matrix[i][startY]);
30             }
31             return res;
32         }
33 
34         for(int i=startY;i<=endY;i++){
35             res.add(matrix[startX][i]);
36         }
37         for(int i=startX+1;i<=endX;i++){
38             res.add(matrix[i][endY]);
39         }
40         for(int i=endY-1;i>=startY;i--){
41             res.add(matrix[endX][i]);
42         }
43         for(int i=endX-1;i>=startX+1;i--){
44             res.add(matrix[i][startY]);
45         }
46         return res;
47         
48     }
49 }
原文地址:https://www.cnblogs.com/pkuYang/p/4320477.html