簡體   English   中英

在遞歸調用中使用 integer,返回錯誤答案

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM