Java 在递归调用中使用整数,返回错误答案
当我将(int curr=0)传递到dfs方法中时,它返回0,但是如果我使用count[],它返回正确的答案,我不太理解当我将curr[]更改为curr时结果错误的原因Java 在递归调用中使用整数,返回错误答案,java,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];
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);
}
public int maxAreaOfIsland(int[][]网格){
int row=grid.length;
int col=网格[0]。长度;
int max=0;
int[]curr=新int[1];
对于(inti=0;iJava按值传递参数
void A(int x) {
x = 42;
}
void B() {
int y = 0;
A(y);
}
A的调用实际上是“使用y
的值初始化局部变量x
”。对x
的后续操作与y
没有关联
在数组的情况下,数组的引用是按值传递的(即复制的),但它是同一个数组。当我传递(int curr=0)时,你是什么意思?curr
参数是int
的数组。你是指当你传递new int[]{0}
还是new int[]{}
或其他什么?请提供一个演示“工作”和“不工作”版本的示例,并准确描述“不工作”的含义。我不明白为什么我应该使用数组(curr[])来记录结果,为什么我不能只使用int(curr)来记录?你所说的int(curr)是什么意思?