#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;
}
};
逻辑对称自洽,如饮美酒,当然而然。

京公网安备 11010502036488号