auto commit

This commit is contained in:
CyC2018 2019-10-17 01:58:26 +08:00
parent 63b4122c46
commit cac408908f
2 changed files with 20 additions and 16 deletions

View File

@ -61,6 +61,8 @@
## 1. 计算在网格中从原点到特定点的最短路径长度
[1091. Shortest Path in Binary Matrix(Medium)](https://leetcode.com/problems/shortest-path-in-binary-matrix/)
```html
[[1,1,0,1],
[1,0,1,0],
@ -68,12 +70,12 @@
[1,0,1,1]]
```
题目描述1 表示可以经过某个位置求解从 (0, 0) 位置到 (tr, tc) 位置的最短路径长度
题目描述0 表示可以经过某个位置求解从左上角到右下角的最短路径长度
```java
public int minPathLength(int[][] grids, int tr, int tc) {
final int[][] direction = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
final int m = grids.length, n = grids[0].length;
public int shortestPathBinaryMatrix(int[][] grids) {
int[][] direction = {{1, -1}, {1, 0}, {1, 1}, {0, -1}, {0, 1}, {-1, -1}, {-1, 0}, {-1, 1}};
int m = grids.length, n = grids[0].length;
Queue<Pair<Integer, Integer>> queue = new LinkedList<>();
queue.add(new Pair<>(0, 0));
int pathLength = 0;
@ -83,14 +85,14 @@ public int minPathLength(int[][] grids, int tr, int tc) {
while (size-- > 0) {
Pair<Integer, Integer> cur = queue.poll();
int cr = cur.getKey(), cc = cur.getValue();
grids[cr][cc] = 0; // 标记
grids[cr][cc] = 1; // 标记
for (int[] d : direction) {
int nr = cr + d[0], nc = cc + d[1];
if (nr < 0 || nr >= m || nc < 0 || nc >= n || grids[nr][nc] == 0) {
if (nr < 0 || nr >= m || nc < 0 || nc >= n || grids[nr][nc] == 1) {
continue;
}
if (nr == tr && nc == tc) {
return pathLength;
if (nr == m - 1 && nc == n - 1) {
return pathLength + 1;
}
queue.add(new Pair<>(nr, nc));
}

View File

@ -61,6 +61,8 @@
## 1. 计算在网格中从原点到特定点的最短路径长度
[1091. Shortest Path in Binary Matrix(Medium)](https://leetcode.com/problems/shortest-path-in-binary-matrix/)
```html
[[1,1,0,1],
[1,0,1,0],
@ -68,12 +70,12 @@
[1,0,1,1]]
```
题目描述1 表示可以经过某个位置求解从 (0, 0) 位置到 (tr, tc) 位置的最短路径长度
题目描述0 表示可以经过某个位置求解从左上角到右下角的最短路径长度
```java
public int minPathLength(int[][] grids, int tr, int tc) {
final int[][] direction = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
final int m = grids.length, n = grids[0].length;
public int shortestPathBinaryMatrix(int[][] grids) {
int[][] direction = {{1, -1}, {1, 0}, {1, 1}, {0, -1}, {0, 1}, {-1, -1}, {-1, 0}, {-1, 1}};
int m = grids.length, n = grids[0].length;
Queue<Pair<Integer, Integer>> queue = new LinkedList<>();
queue.add(new Pair<>(0, 0));
int pathLength = 0;
@ -83,14 +85,14 @@ public int minPathLength(int[][] grids, int tr, int tc) {
while (size-- > 0) {
Pair<Integer, Integer> cur = queue.poll();
int cr = cur.getKey(), cc = cur.getValue();
grids[cr][cc] = 0; // 标记
grids[cr][cc] = 1; // 标记
for (int[] d : direction) {
int nr = cr + d[0], nc = cc + d[1];
if (nr < 0 || nr >= m || nc < 0 || nc >= n || grids[nr][nc] == 0) {
if (nr < 0 || nr >= m || nc < 0 || nc >= n || grids[nr][nc] == 1) {
continue;
}
if (nr == tr && nc == tc) {
return pathLength;
if (nr == m - 1 && nc == n - 1) {
return pathLength + 1;
}
queue.add(new Pair<>(nr, nc));
}