可是答案是16,这里是6
时间: 2024-04-10 13:27:54 浏览: 16
抱歉,我之前的回答有误。实际上,你代码中计算岛屿周长的逻辑误。
修正后的代码如下:
```
class Solution {
int islandPerimeter(int[][] grid) {
int land = 0;
int broad = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length j++) {
if (grid[i][j] == 1) {
land++;
if (j < grid[0].length - 1 && grid[i][j + 1] == 1) {
++;
}
if (i < grid.length - 1 && grid[i + 1][j] == 1) {
broad++;
}
}
}
}
return land * 4 - broad * 2;
}
}
```
这个修复后的代码将正确计算岛屿的周长。对于每个陆地格子,会增加陆地数量 land,然后根据它的右边和下边也是陆地来增加边界数量 broad。最后,根据公式 `周 = 4 * land - 2 * broad` 计算出岛屿的周长。
对于给定的示例输入,修复后的代码返回的结果应该是 16。