leetcode 80: Spiral Matrix

Spiral MatrixMar 25 '12

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].

 

 

public class Solution {
    public ArrayList<Integer> spiralOrder(int[][] matrix) {
        // Start typing your Java solution below
        // DO NOT write main() function
        
        ArrayList<Integer> res = new ArrayList<Integer>();
        int m = matrix.length;
        if(m<1) return res;
        int n = matrix[0].length;
        int top = 0, bottom = m-1, left = 0, right = n-1;
        
        int loop = m<n ? m : n;
        loop = (loop+1)/2;
        
        for( int i=0; i<loop; i++) {
            
            for(int j=left; j<=right; j++) {
                res.add( matrix[top][j] );
            }
            top++;
            
            if(top>bottom) return res;
            for(int j=top; j<=bottom; j++) {
                res.add( matrix[j][right] );
            }
            right--;
            
            if(left>right) return res;
            for(int j=right; j>=left; j--) {
                res.add( matrix[bottom][j] );
            }
            bottom--;
            
            if(top>bottom) return res;
            for(int j=bottom; j>=top; j--) {
                res.add( matrix[j][left] );
            }
            left++;
        }
        
        return res;
    }
}


 

posted @ 2013-02-18 07:40  西施豆腐渣  阅读(119)  评论(0编辑  收藏  举报