[英]Using integer in recursive call, return the wrong answer
當我將(int curr = 0)傳遞給dfs方法時,它返回0,但是如果我使用count [],它會返回正確的答案,我不太明白我更改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 按值傳遞 arguments。 在
void A(int x) {
x = 42;
}
void B() {
int y = 0;
A(y);
}
A 的調用實際上是“使用y
的值來初始化局部變量x
”。 對x
的后續操作與y
無關。
在數組的情況下,對數組的引用按值傳遞(即復制),但它是同一個數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.