题目链接:螺旋矩阵

给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

方法:模拟

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int> ans;
        int m = matrix.size();
        int n = matrix[0].size();
        int u = 0,d = m-1,l = 0,r = n - 1;
        while (ans.size() < m*n) {
            for (int i = l;i <= r;i++) {
                if (ans.size() >= m * n)
                    return ans;
                ans.push_back(matrix[u][i]);
            }
            u++;
            for (int i = u;i <= d;i++) {
                if (ans.size() >= m * n)
                    return ans;
                ans.push_back(matrix[i][r]);
            }
            r--;
            for (int i = r;i >= l;i--) {
                if (ans.size() >= m * n)
                    return ans;
                ans.push_back(matrix[d][i]);
            }
            d--;
            for (int i = d;i >= u;i--) {
                if (ans.size() >= m * n)
                    return ans;
                ans.push_back(matrix[i][l]);
            }
            l++;
        }
        return ans;
    }
};

标签: hot100, Medium, 矩阵, 模拟

添加新评论