Skip to content

Commit e40589c

Browse files
authored
Merge pull request #97 from vanditkhurana1/patch-1
Committing SpiralMatrix.java
2 parents 540e2da + 5b61e7f commit e40589c

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

SpiralMatrix.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
import java.util.*;
3+
4+
class SpiralMatrix{
5+
6+
// Function to print in spiral order
7+
public static List<Integer> spiralOrder(int[][] matrix)
8+
{
9+
List<Integer> ans = new ArrayList<Integer>();
10+
11+
if (matrix.length == 0)
12+
return ans;
13+
14+
int R = matrix.length, C = matrix[0].length;
15+
boolean[][] seen = new boolean[R][C];
16+
int[] dr = { 0, 1, 0, -1 };
17+
int[] dc = { 1, 0, -1, 0 };
18+
int r = 0, c = 0, di = 0;
19+
20+
// Iterate from 0 to R * C - 1
21+
for (int i = 0; i < R * C; i++) {
22+
ans.add(matrix[r]);
23+
seen[r] = true;
24+
int cr = r + dr[di];
25+
int cc = c + dc[di];
26+
27+
if (0 <= cr && cr < R && 0 <= cc && cc < C
28+
&& !seen[cr][cc]) {
29+
r = cr;
30+
c = cc;
31+
}
32+
else {
33+
di = (di + 1) % 4;
34+
r += dr[di];
35+
c += dc[di];
36+
}
37+
}
38+
return ans;
39+
}
40+
41+
// Driver Code
42+
public static void main(String[] args)
43+
{
44+
int a[][] = { { 1, 2, 3, 4 },
45+
{ 5, 6, 7, 8 },
46+
{ 9, 10, 11, 12 },
47+
{ 13, 14, 15, 16 } };
48+
49+
System.out.println(spiralOrder(a));
50+
}
51+
}

0 commit comments

Comments
 (0)