題目描述:
給定乙個由 『1』(陸地)和 『0』(水)組成的的二維網格,計算島嶼的數量。乙個島被水包圍,並且它是通過水平方向或垂直方向上相鄰的陸地連線而成的。你可以假設網格的四個邊均被水包圍。
示例 1:
輸入:11110
11010
11000
00000
輸出: 1
示例 2:
輸入:11000
11000
00100
00011
輸出: 3
使用bfs演算法,當然也可以使用lru
**:
class solution
int result = 0;
int x = ;
int y = ;
for (int i = 0; i < grid.length; i++) );
while (!tem.isempty()) );
grid[temx][temy] = '0';}}
}}
} }
} return result;
}}
dfs就是比bfs快
class solution
int result = 0;
int x = ;
int y = ;
for (int i = 0; i < grid.length; i++)
}}
return result;
}public void dfs(char grid,int row,int col)
if(grid[row][col] == '1')
}}
lru演算法實現
class solution
int x = ;
int y = ;
int m = grid.length;
int n = grid[0].length;
int root = new int[m * n];
// 初始化
for (int i = 0; i < m; i++)
}} system.out.println(result);
// 進行合併操作
for (int i = 0; i < m; i++) }}
}}
return result;
}public void unio(int root,int date1,int date2)
root[x1] = x2;
} public int find(int root,int date)
}
島嶼的個數
給乙個01矩陣,求不同的島嶼的個數。0代表海,1代表島,如果兩個1相鄰,那麼這兩個1屬於同乙個島。我們只考慮上下左右為相鄰。樣例 在矩陣 1,1,0,0,0 0,1,0,0,1 0,0,0,1,1 0,0,0,0,0 0,0,0,0,1 中有3個島.借鑑網上 整理得 public class sol...
433 島嶼的個數
4.11 陣列統一賦值的函式arrays.fill 感覺自己的想法很野啊,用總的點的個數去減。就是要注意邊界值,陣列是從下標0開始的,一定要注意。public class solution 行數 int m grid 0 length if m 0 列數 int count m n boolean ...
島嶼的個數 LintCode
給乙個01矩陣,求不同的島嶼的個數。0代表海,1代表島,如果兩個1相鄰,那麼這兩個1屬於同乙個島。我們只考慮上下左右為相鄰。樣例 在矩陣 1,1,0,0,0 0,1,0,0,1 0,0,0,1,1 0,0,0,0,0 0,0,0,0,1 中有 3 個島.思路 利用遞迴,將與當前島嶼相接壤的島存入ma...