`

LeetCode 54 - Spiral Matrix

 
阅读更多

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

/*  k - starting row index
    m - ending row index
    l - starting column index
    n - ending column index
    i - iterator
*/
public List<Integer> spiralOrder(int[][] matrix) {
    List<Integer> result = new ArrayList<>();
    int m = matrix.length;
    if(m == 0) return result;
    int n = matrix[0].length;
    if(n == 0) return result;
    int k = 0, l = 0;
    while(k<m && l<n) {
        for(int i=l; i<n; i++) {
            result.add(matrix[k][i]);
        }
        k++;
        n--;
        for(int i=k; i<m; i++) {
            result.add(matrix[i][n]);
        }
        if(k < m) {
            m--;
            for(int i=n-1; i>=l; i--) {
                result.add(matrix[m][i]);
            }
        }
        if(l < n) {
            for(int i=m-1; i>=k; i--) {
                result.add(matrix[i][l]);
            }
            l++;
        }
    }
    return result;
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics