题解 | #顺时针打印矩阵#

顺时针打印矩阵

https://www.nowcoder.com/practice/9b4c81a02cd34f76be2659fa0d54342a

class Solution {
public:
    vector<int> printMatrix(vector<vector<int> > matrix) {
        vector<int> res;
        int m = matrix.size(), n = matrix[0].size();
        int layer = min((m + 1) / 2, (n + 1) / 2);
        for (int k = 0; k < layer; k++) {
            if (m - 2 * k == 1) {
                for (int j = k; j < n - k; j++) {
                    res.push_back(matrix[k][j]);
                }
            }
            else if (n - 2 * k == 1) {
                for (int i = k; i < m - k; i++) {
                    res.push_back(matrix[i][n - 1 - k]);
                }
            }
            else {
                for (int j = k; j < n - 1 - k; j++) {
                    res.push_back(matrix[k][j]);
                }
                for (int i = k; i < m - 1 - k; i++) {
                    res.push_back(matrix[i][n - 1 - k]);
                }
                for (int j = n - 1 - k; j > k; j--) {
                    res.push_back(matrix[m - 1 - k][j]);
                }
                for (int i = m - 1 - k; i > k; i--) {
                    res.push_back(matrix[i][k]);
                }
            }
        }
        return res;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务