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 }

 

你可能感兴趣的:(LeetCode)