Skip to content

Commit 84097c0

Browse files
solves matrix cells in distance order
1 parent 646e705 commit 84097c0

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@
279279
| 1022 | [Sum of Root to Leaf Binary Numbers](https://leetcode.com/problems/sum-of-root-to-leaf-binary-numbers) | [![Java](assets/java.png)](src/SumOfRootToLeafBinaryNumbers.java) | |
280280
| 1025 | [Divisor Game](https://leetcode.com/problems/divisor-game) | [![Java](assets/java.png)](src/DivisorGame.java) | |
281281
| 1029 | [Two City Scheduling](https://leetcode.com/problems/two-city-scheduling) | | |
282-
| 1030 | [Matrix Cells in Distance Order](https://leetcode.com/problems/matrix-cells-in-distance-order) | | |
282+
| 1030 | [Matrix Cells in Distance Order](https://leetcode.com/problems/matrix-cells-in-distance-order) | [![Java](assets/java.png)](src/MatrixCellsInDistanceOrder.java) | |
283283
| 1033 | [Moving Stones Until Consecutive](https://leetcode.com/problems/moving-stones-until-consecutive) | | |
284284
| 1037 | [Valid Boomerang](https://leetcode.com/problems/valid-boomerang) | | |
285285
| 1042 | [Flower Planting with no Adjacent](https://leetcode.com/problems/flower-planting-with-no-adjacent) | | |

src/MatrixCellsInDistanceOrder.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import java.util.LinkedList;
2+
import java.util.Queue;
3+
4+
public class MatrixCellsInDistanceOrder {
5+
public int[][] allCellsDistOrder(final int rows, final int columns, int rCenter, int cCenter) {
6+
int[][] result = new int[rows * columns][2];
7+
final Queue<int[]> positions = new LinkedList<>();
8+
final boolean[][] visited = new boolean[rows][columns];
9+
positions.add(new int[] {rCenter, cCenter});
10+
int k = 0, row, column;
11+
while (!positions.isEmpty()) {
12+
int[] position = positions.poll();
13+
row = position[0];
14+
column = position[1];
15+
if (row < 0 || row >= rows || column < 0 || column >= columns) continue;
16+
if (visited[row][column]) continue;
17+
visited[row][column] = true;
18+
result[k++] = position;
19+
positions.add(new int[] {row - 1, column});
20+
positions.add(new int[] {row, column + 1});
21+
positions.add(new int[] {row + 1, column});
22+
positions.add(new int[] {row, column - 1});
23+
}
24+
return result;
25+
}
26+
}

0 commit comments

Comments
 (0)