Spiral Matrix [leetcode]

来源:互联网 发布:网件 tplink 知乎 编辑:程序博客网 时间:2024/06/17 04:31

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


vector<int> spiralOrder(vector<vector<int> > &matrix) {        int layer = 0;        vector<int> res;        int m = matrix.size();        if (m == 0) return res;        int n = matrix[0].size();        if (n == 0) return res;        while (true)        {            if (layer >= n - layer) break;            for (int i = layer; i < n - layer; i++) res.push_back(matrix[layer][i]);            if (layer + 1 >= m - layer) break;            for (int i = layer + 1; i < m - layer; i++) res.push_back(matrix[i][n-layer-1]);            if (n - layer - 2 < layer) break;            for (int i = n - layer - 2; i >= layer; i-- ) res.push_back(matrix[m-layer-1][i]);            if (m - layer - 2 < layer + 1) break;            for (int i = m - layer - 2; i >= layer + 1; i--) res.push_back(matrix[i][layer]);            layer++;        }        return res;    }


0 0
原创粉丝点击