0%

498. 对角线遍历

498. 对角线遍历

单行单列的有点烦,没来得及转弯就结束了

模拟大法好

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
40
class Solution {
public:
vector<int> findDiagonalOrder(vector<vector<int>>& mat) {
int m = mat.size(), n = mat[0].size();
if(m == 1)
return mat[0];
if(n == 1)
{
vector<int> v;
for(auto v1 : mat)
v.push_back(v1[0]);
return v;
}
int i{ 0 }, j{ 0 };
vector<int> ret;
int dir{ 1 };
int d[2][2]{ { 1, -1 }, {-1, 1} };
while(i < m && j < n)
{
ret.push_back(mat[i][j]);
if(i == 0 || i == m - 1 || j == 0 || j == n - 1)
{
if(j == n - 1)
++i;
else if(i == 0)
++j;
else if(i == m - 1)
++j;
else if(j == 0)
++i;
ret.push_back(mat[i][j]);
dir = (dir + 1) % 2;
}
i += d[dir][0];
j += d[dir][1];
}
return ret;
}
};
};