mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-07 07:35:35 +08:00
Update 0100.岛屿的最大面积.md of php and go
Update 0100.岛屿的最大面积.md of php and go
This commit is contained in:
@ -322,6 +322,72 @@ print(result)
|
|||||||
|
|
||||||
### Go
|
### Go
|
||||||
|
|
||||||
|
``` go
|
||||||
|
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
var count int
|
||||||
|
var dir = [][]int{{0, 1}, {1, 0}, {-1, 0}, {0, -1}} // 四个方向
|
||||||
|
|
||||||
|
func dfs(grid [][]int, visited [][]bool, x, y int) {
|
||||||
|
for i := 0; i < 4; i++ {
|
||||||
|
nextx := x + dir[i][0]
|
||||||
|
nexty := y + dir[i][1]
|
||||||
|
if nextx < 0 || nextx >= len(grid) || nexty < 0 || nexty >= len(grid[0]) {
|
||||||
|
continue // 越界了,直接跳过
|
||||||
|
}
|
||||||
|
if !visited[nextx][nexty] && grid[nextx][nexty] == 1 { // 没有访问过的 同时 是陆地的
|
||||||
|
visited[nextx][nexty] = true
|
||||||
|
count++
|
||||||
|
dfs(grid, visited, nextx, nexty)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var n, m int
|
||||||
|
fmt.Scan(&n, &m)
|
||||||
|
|
||||||
|
grid := make([][]int, n)
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
grid[i] = make([]int, m)
|
||||||
|
for j := 0; j < m; j++ {
|
||||||
|
fmt.Scan(&grid[i][j])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
visited := make([][]bool, n)
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
visited[i] = make([]bool, m)
|
||||||
|
}
|
||||||
|
|
||||||
|
result := 0
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
for j := 0; j < m; j++ {
|
||||||
|
if !visited[i][j] && grid[i][j] == 1 {
|
||||||
|
count = 1 // 因为dfs处理下一个节点,所以这里遇到陆地了就先计数,dfs处理接下来的相邻陆地
|
||||||
|
visited[i][j] = true
|
||||||
|
dfs(grid, visited, i, j)
|
||||||
|
if count > result {
|
||||||
|
result = count
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Println(result)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Rust
|
### Rust
|
||||||
|
|
||||||
### Javascript
|
### Javascript
|
||||||
@ -420,6 +486,65 @@ const bfs = (graph, visited, x, y) => {
|
|||||||
|
|
||||||
### PhP
|
### PhP
|
||||||
|
|
||||||
|
``` php
|
||||||
|
|
||||||
|
<?php
|
||||||
|
|
||||||
|
function dfs(&$grid, &$visited, $x, $y, &$count, &$dir) {
|
||||||
|
for ($i = 0; $i < 4; $i++) {
|
||||||
|
$nextx = $x + $dir[$i][0];
|
||||||
|
$nexty = $y + $dir[$i][1];
|
||||||
|
if ($nextx < 0 || $nextx >= count($grid) || $nexty < 0 || $nexty >= count($grid[0])) continue; // 越界了,直接跳过
|
||||||
|
if (!$visited[$nextx][$nexty] && $grid[$nextx][$nexty] == 1) { // 没有访问过的 同时 是陆地的
|
||||||
|
$visited[$nextx][$nexty] = true;
|
||||||
|
$count++;
|
||||||
|
dfs($grid, $visited, $nextx, $nexty, $count, $dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Main function
|
||||||
|
function main() {
|
||||||
|
$input = trim(fgets(STDIN));
|
||||||
|
list($n, $m) = explode(' ', $input);
|
||||||
|
|
||||||
|
$grid = [];
|
||||||
|
for ($i = 0; $i < $n; $i++) {
|
||||||
|
$input = trim(fgets(STDIN));
|
||||||
|
$grid[] = array_map('intval', explode(' ', $input));
|
||||||
|
}
|
||||||
|
|
||||||
|
$visited = [];
|
||||||
|
for ($i = 0; $i < $n; $i++) {
|
||||||
|
$visited[] = array_fill(0, $m, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = 0;
|
||||||
|
$count = 0;
|
||||||
|
$dir = [[0, 1], [1, 0], [-1, 0], [0, -1]]; // 四个方向
|
||||||
|
|
||||||
|
for ($i = 0; $i < $n; $i++) {
|
||||||
|
for ($j = 0; $j < $m; $j++) {
|
||||||
|
if (!$visited[$i][$j] && $grid[$i][$j] == 1) {
|
||||||
|
$count = 1; // 因为dfs处理下一个节点,所以这里遇到陆地了就先计数,dfs处理接下来的相邻陆地
|
||||||
|
$visited[$i][$j] = true;
|
||||||
|
dfs($grid, $visited, $i, $j, $count, $dir); // 将与其链接的陆地都标记上 true
|
||||||
|
$result = max($result, $count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $result . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
main();
|
||||||
|
|
||||||
|
?>
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
### Swift
|
### Swift
|
||||||
|
|
||||||
### Scala
|
### Scala
|
||||||
|
Reference in New Issue
Block a user