[LeetCode] Spiral Matrix

来源:互联网 发布:oracle数据还原 编辑:程序博客网 时间:2024/05/13 13:15
class Solution {public:    vector<int> spiralOrder(vector<vector<int> > &matrix) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        vector<int> ret;                int m = matrix.size();        if (m == 0) return ret;        int n = matrix[0].size();        if (n == 0) return ret;                int i = 0;        int j = 0;        int d = 0;                int up = -1;        int down = m;        int left = -1;        int right = n;                for (int c = 0; c < m * n; c++) {            ret.push_back(matrix[i][j]);                        switch (d) {                case 0:                    if (j + 1 == right) {                        i++;                        d = 1;                        up++;                    } else {                        j++;                    }                                        break;                case 1:                    if (i + 1 == down) {                        j--;                        d = 2;                        right--;                    } else {                        i++;                    }                                        break;                case 2:                    if (j - 1 == left) {                        i--;                        d = 3;                        down--;                    } else {                        j--;                    }                                        break;                case 3:                    if (i - 1 == up) {                        j++;                        d = 0;                        left++;                    } else {                        i--;                    }                                        break;            }        }                return ret;    }};


Small Case: 4ms

Large Case: 0ms


Time: O(m * n)

Space: O(m * n)

原创粉丝点击