Diagonal Traverse LeetCode solution in C++

1
class Solution {
2
public:
3
vector<int> findDiagonalOrder(vector<vector<int>> &mat) {
4
vector<int> vec;
5
int m = mat.size() - 1, n = mat[0].size() - 1;
6
int i = 0, j = 0;
7
if (m == -1) {
8
return {};
9
}
10
if (m == 0) {
11
for (int i{0}; i <= n; ++i) {
12
vec.push_back(mat.at(0).at(i));
13
}
14
return vec;
15
} else if (n == 0) {
16
for (int i{0}; i <= m; ++i) {
17
vec.push_back(mat.at(i).at(0));
18
}
19
return vec;
20
}
21
for (int k{0}; k <= m + n; k++) {
22
if (k == 0) {
23
vec.push_back(mat.at(0).at(0));
24
j++;
25
} else if (k == m + n) {
26
vec.push_back(mat.at(m).at(n));
27
} else if (k % 2 != 0) {
28
while (i <= m && j >= 0 && j <= n) {
29
vec.push_back(mat.at(i).at(j));
30
i++;
31
j--;
32
}
33
if (i <= m && j < 0) {
34
j++;
35
} else if (i > m && j >= 0) {
36
j += 2;
37
i--;
38
} else if (i > m && j < 0) {
39
i--;
40
j += 2;
41
}
42

43
} else {
44
while (i >= 0 && j <= n) {
45
vec.push_back(mat.at(i).at(j));
46
i--;
47
j++;
48
}
49
if (i < 0 && j <= n) {
50
i++;
51
} else if (i < 0 && j > n) {
52
i += 2;
53
j--;
54
} else if (i > m && j < 0) {
55
i--;
56
j += 2;
57
} else if (i >= 0 && j > n) {
58
i += 2;
59
j--;
60
}
61
}
62
}
63
return vec;
64
}
65
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0