Merge pull request #2698 from sxdtywm/patch-6

Update 0106.岛屿的周长.md for python go
This commit is contained in:
程序员Carl
2024-09-02 11:36:40 +08:00
committed by GitHub

View File

@ -216,8 +216,131 @@ public class Main {
### Python
```python
def main():
import sys
input = sys.stdin.read
data = input().split()
# 读取 n 和 m
n = int(data[0])
m = int(data[1])
# 初始化 grid
grid = []
index = 2
for i in range(n):
grid.append([int(data[index + j]) for j in range(m)])
index += m
sum_land = 0 # 陆地数量
cover = 0 # 相邻数量
for i in range(n):
for j in range(m):
if grid[i][j] == 1:
sum_land += 1
# 统计上边相邻陆地
if i - 1 >= 0 and grid[i - 1][j] == 1:
cover += 1
# 统计左边相邻陆地
if j - 1 >= 0 and grid[i][j - 1] == 1:
cover += 1
# 不统计下边和右边,避免重复计算
result = sum_land * 4 - cover * 2
print(result)
if __name__ == "__main__":
main()
```
### Go
```go
package main
import (
"bufio"
"fmt"
"os"
"strconv"
"strings"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Scan()
line := scanner.Text()
n, m := parseInput(line)
// 初始化 grid
grid := make([][]int, n)
for i := range grid {
grid[i] = make([]int, m)
}
// 读入 grid 数据
for i := 0; i < n; i++ {
scanner.Scan()
line := scanner.Text()
values := parseLine(line, m)
for j := 0; j < m; j++ {
grid[i][j] = values[j]
}
}
sum := 0 // 陆地数量
cover := 0 // 相邻数量
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if grid[i][j] == 1 {
sum++ // 统计总的陆地数量
// 统计上边相邻陆地
if i-1 >= 0 && grid[i-1][j] == 1 {
cover++
}
// 统计左边相邻陆地
if j-1 >= 0 && grid[i][j-1] == 1 {
cover++
}
// 为什么没统计下边和右边? 因为避免重复计算
}
}
}
fmt.Println(sum*4 - cover*2)
}
// parseInput 解析 n 和 m
func parseInput(line string) (int, int) {
parts := strings.Split(line, " ")
n, _ := strconv.Atoi(parts[0])
m, _ := strconv.Atoi(parts[1])
return n, m
}
// parseLine 解析一行中的多个值
func parseLine(line string, count int) []int {
parts := strings.Split(line, " ")
values := make([]int, count)
for i := 0; i < count; i++ {
values[i], _ = strconv.Atoi(parts[i])
}
return values
}
```
### Rust
### Javascript