JZ19 顺时针打印矩阵

本文最后更新于:2022年4月9日 中午

image-20211006111058182

Solution

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Solution {
public:
vector<int> printMatrix(vector<vector<int> > matrix) {
vector<int> res;
int m = matrix.size();
int n = matrix[0].size();
if (m == 0 || n == 0) return res;

int num = m * n;
int l=0, r=n-1, t=0, b=m-1;
while (num > 0) {
// 左 ——> 右,左闭右开区间,由于 m 与 n 不一定相等,一定要判断 num > 0
for (int i = l; i < r+1 && num > 0; ++i) {
res.push_back(matrix[t][i]);
num--;
}
t++;
// 上 ——> 下
for (int i = t; i < b+1 && num > 0; ++i) {
res.push_back(matrix[i][r]);
num--;
}
r--;
// 右 ——> 左
for (int i = r; i > l-1 && num > 0; --i) {
res.push_back(matrix[b][i]);
num--;
}
b--;
// 下 ——> 上
for (int i = b; i > t-1 && num > 0; --i) {
res.push_back(matrix[i][l]);
num--;
}
l++;
}
return res;
}
};

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!