java - 在递归调用中使用整数,返回错误的答案
问题描述
当我将(int curr = 0)传递给dfs方法时,它返回0,但是如果我使用count [],它会返回正确的答案,我不太明白我更改curr时结果错误的原因[] 进入 curr 。
public int maxAreaOfIsland(int[][] grid) {
int row = grid.length;
int col = grid[0].length;
int max = 0;
int[] curr = new int[1];
for(int i=0;i<row;i++) {
for(int j=0;j<col;j++) {
if(grid[i][j] == 1) {
curr[0] = 0;
dfs(grid, i, j, curr);
max = Math.max(max, curr[0]);
}
}
}
return max;
}
int[][] directions = new int[][]{{0,1},{0,-1},{1,0},{-1,0}};
public void dfs(int[][] grid, int i, int j, int[] curr) {
if(i<0||i>=grid.length||j<0||j>=grid[0].length||grid[i][j] == 0 )
return;
curr[0]+=1;
grid[i][j] = 0;
dfs(grid, i+1,j, curr);
dfs(grid, i-1,j,curr);
dfs(grid, i,j+1,curr);
dfs(grid, i,j-1,curr);
}
解决方案
Java 按值传递参数。在
void A(int x) {
x = 42;
}
void B() {
int y = 0;
A(y);
}
A 的调用实际上是“使用 的值y
来初始化局部变量x
”。上的后续操作x
与y
.
在数组的情况下,对数组的引用按值传递(即复制),但它是同一个数组。
推荐阅读
- cypress - 使用 Auth0.com 登录和重定向的赛普拉斯
- elasticsearch - Elasticsearch Prometheus 导出器指标增强。抓取 CCR 指标
- javascript - 浏览器是否支持 JavaScript 函数?
- autocomplete - mac m1 iterm2 用标签自动完成?
- angularjs - 如何在angular js中查找对象是否属于formcontroller类型
- xaml - 当键盘出现在 Entry 控件 Xamarin Forms 中时,稍微向上调整和移动页面的内容
- gitlab - 如何在 gitlab 中将 asciidoc 与源代码连接起来?
- cockroachdb - CockroachDB CSV 导入因空列而失败
- html - 将元素定位在上边框,但在下边框后面
- xml - 如何根据 RNG Schema 中另一个 XML 属性的值强制使用 XML 属性?