题解 | 顺时针打印矩阵

顺时针打印矩阵

https://www.nowcoder.com/practice/97e7a475d2a84eacb60ee545597a8407

#include <vector>
class Printer {
  public:
    vector<int> clockwisePrint(vector<vector<int> > mat, int n, int m) {
        int r = m - 1; //右边界
        int d = n - 1; //下边界
        int l = 0;     //左边界
        int u = 0;     //上边界
        int i;         //游标 从左上角开始
        vector<int> res; //结果集 
        for (; r >= l && d >= u;) {
            //右行一行
            for (i = l; r >= l && d >= u && i <= r; res.push_back(mat[u][i]), i++);
            u++; //上界向下收一行
            //下行一列
            for (i = u; r >= l && d >= u && i <= d; res.push_back(mat[i][r]), i++);
            r--; //右界向左收一列
            //左行一行
            for (i = r; r >= l && d >= u && i >= l; res.push_back(mat[d][i]), i--);
            d--; //下界向上收一行
            //上行一列
            for (i = d; r >= l && d >= u && i >= u; res.push_back(mat[i][l]), i--);
            l++; //左界向右收一列
        }
        return res;
    }
};

逻辑对称自洽,如饮美酒,当然而然。

全部评论
可以的 就是学历不是九八五不认可
1 回复 分享
发布于 04-03 19:07 陕西

相关推荐

评论
2
收藏
分享

创作者周榜

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