【发布时间】:2022-12-31 19:02:27
【问题描述】:
我一直在LeetCode.com 上解决这个名为63. Unique Paths II 的问题。我需要一些预填充,为此我需要运行这个循环。
for (int row = 1; row < grid[0].length; row++) {
if (grid[row][0] == 1) {
grid[row][0] = 0;
break;
}
grid[row][0] = 1;
}
很明显,如果 index(在本例中为 row 迭代器)变得等于正在考虑的 array 的长度,那么它应该退出循环。但就我而言,它给出了这个错误
java.lang.ArrayIndexOutOfBoundsException:索引 1 超出范围 第 18 行的长度 1,第 54 行的 Solution.uniquePathsWithObstacles,驱动解决方案.帮手在第 84 行,司机。主要的
这是一种奇特的。我错过了什么或者它很奇怪吗?
这是我的完整代码,我的方法不应该作为讨论的部分,因为如果有问题我想自己找出来。现在我想听听我上面提到的特殊行为。
class Solution { public int uniquePathsWithObstacles(int[][] grid) { if(grid[0][0] == 1 || grid[grid.length - 1][grid[0].length - 1] == 0){ return 0; } for(int col = 1; col < grid.length; col ++){ if(grid[0][col] == 1){ grid[0][col] = 0; break; } grid[0][col] = 1; } for(int row = 1; row < grid[0].length; row ++){ if(grid[row][0] == 1){ grid[row][0] = 0; break; } grid[row][0] = 1; } for(int i = 1; i < grid.length; i ++){ for(int j = 1; j < grid[i].length; j ++){ grid[i][j] = grid[i][j] != 1 ? grid[i - 1][j] + grid[i][j - 1] : 0; } } return grid[grid.length - 1][grid[0].length - 1]; } }
【问题讨论】:
-
而第 54 行?
-
我删除了那个诡计,这是一个错误。