File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ *. lr ->
3+ * ^ 1 2 3 4. rd
4+ * lu 5 6 7 8. v
5+ * <- rl
6+ * tc : O(mn)
7+ * sc : O(1)
8+ * */
9+
10+ class Solution {
11+ public List <Integer > spiralOrder (int [][] matrix ) {
12+ int m = matrix .length ;
13+ int n = matrix [0 ].length ;
14+ int lr = 0 , rd = 0 , rl = n -1 , lu = m - 1 ;
15+ int cnt = 0 , target = m *n ;
16+ List <Integer > res = new ArrayList <>();
17+
18+ while (lr <= rl && rd <= lu ) {
19+ for (int startLeft = lr ; startLeft <= rl ; startLeft ++) {
20+ res .add (matrix [rd ][startLeft ]);
21+ }
22+ rd ++;
23+ for (int startUp = rd ; startUp <=lu ; startUp ++) {
24+ res .add (matrix [startUp ][rl ]);
25+ }
26+ rl --;
27+ if (rd <= lu ) {
28+ for (int startRight = rl ; startRight >= lr ; startRight --) {
29+ res .add (matrix [lu ][startRight ]);
30+ }
31+ }
32+ lu --;
33+ if (lr <= rl ) {
34+ for (int startDown = lu ; startDown >= rd ; startDown --) {
35+ res .add (matrix [startDown ][lr ]);
36+ }
37+ }
38+ lr ++;
39+ }
40+ return res ;
41+ }
42+ }
You can’t perform that action at this time.
0 commit comments