Skip to content

Commit e6c4510

Browse files
committed
Spiral Matrix solution
1 parent d5b3ef2 commit e6c4510

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

spiral-matrix/PDKhan.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
class Solution {
2+
public:
3+
vector<int> spiralOrder(vector<vector<int>>& matrix) {
4+
enum direction { R, D, L, U };
5+
6+
enum direction dir = R;
7+
vector<int> result;
8+
int min_R = 0;
9+
int max_R = matrix.size() - 1;
10+
int min_C = 0;
11+
int max_C = matrix[0].size() - 1;
12+
int r = 0;
13+
int c = 0;
14+
int size = matrix.size() * matrix[0].size();
15+
16+
while(result.size() < size){
17+
result.push_back(matrix[r][c]);
18+
19+
switch(dir){
20+
case R:
21+
if(c == max_C){
22+
dir = D;
23+
min_R++;
24+
r++;
25+
}else
26+
c++;
27+
break;
28+
case D:
29+
if(r == max_R){
30+
dir = L;
31+
max_C--;
32+
c--;
33+
}else
34+
r++;
35+
break;
36+
case L:
37+
if(c == min_C){
38+
dir = U;
39+
max_R--;
40+
r--;
41+
}else
42+
c--;
43+
break;
44+
case U:
45+
if(r == min_R){
46+
dir = R;
47+
min_C++;
48+
c++;
49+
}else
50+
r--;
51+
break;
52+
}
53+
}
54+
55+
return result;
56+
}
57+
};

0 commit comments

Comments
 (0)