首页 > 解决方案 > 在递归调用中使用整数,返回错误的答案

问题描述

当我将(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

解决方案


Java 按值传递参数。在

void A(int x) {
   x = 42;
} 

void B() {
   int y = 0;
   A(y);
}

A 的调用实际上是“使用 的值y来初始化局部变量x”。上的后续操作xy.

在数组的情况下,对数组的引用按值传递(即复制),但它是同一个数组。


推荐阅读