島嶼的周長

2022-05-16 06:26:53 字數 1165 閱讀 3079

給定乙個 row x col 的二維網格地圖 grid ,其中:grid[i][j] = 1 表示陸地, grid[i][j] = 0 表示水域。

網格中的格仔 水平和垂直 方向相連(對角線方向不相連)。整個網格被水完全包圍,但其中恰好有乙個島嶼(或者說,乙個或多個表示陸地的格仔相連組成的島嶼)。

島嶼中沒有「湖」(「湖」 指水域在島嶼內部且不和島嶼周圍的水相連)。格仔是邊長為 1 的正方形。網格為長方形,且寬度和高度均不超過 100 。計算這個島嶼的周長。

輸入:grid = [[1]] 輸出:4 示例 3:

輸入:grid = [[1,0]] 輸出:4

dfs(深度遍歷搜尋)

島就乙個,我們從第乙個遇到的土地開始深搜。

對於每個土地節點,做一些事情,基於它,遞迴上下左右四個點,做同樣的事情。做什麼事情呢?

從土地到土地,之間不會產生周長,但從土地邁入海洋,之間會產生 1 個周長,從土地邁出矩陣邊界,也會產生 1 個周長。

dfs 的過程中,對當前點的上下左右遞迴,下乙個遞迴的點又對上下左右遞迴,就會造成重複訪問,造成周長的重複計算。

遍歷過的土地節點,將值改為 2,區分於 1 和 0,代表訪問過了。

package main

import "fmt"

func islandperimeter(nums [3][3]int) int

} }return 0

}func infectnums(nums [3][3]int, row, col int) int

if nums[row][col] == 0

if nums[row][col] == 2

nums[row][col] = 2

return infectnums(nums, row-1, col) + infectnums(nums, row+1, col) + infectnums(nums, row, col-1) + infectnums(nums, row, col+1)

}func main() ,

, ,

} res := islandperimeter(nums)

fmt.println(res)

}

島嶼的周長

島嶼的周長1 給定乙個包含 0 和 1 的二維網格地圖,其中 1 表示陸地 0 表示水域。網格中的格仔水平和垂直方向相連 對角線方向不相連 整個網格被水完全包圍,但其中恰好有乙個島嶼 或者說,乙個或多個表示陸地的格仔相連組成的島嶼 島嶼中沒有 湖 湖 指水域在島嶼內部且不和島嶼周圍的水相連 格仔是邊...

島嶼的周長

問題描述 給定乙個包含 0 和 1 的二維網格地圖,其中 1 表示陸地 0 表示水域。網格中的格仔水平和垂直方向相連 對角線方向不相連 整個網格被水完全包圍,但其中恰好有乙個島嶼 或者說,乙個或多個表示陸地的格仔相連組成的島嶼 島嶼中沒有 湖 湖 指水域在島嶼內部且不和島嶼周圍的水相連 格仔是邊長為...

島嶼周長(C )

描述 用乙個n m的二維陣列表示地圖,1表示陸地,0代表海水,每一格都表示乙個1 1的區域。地圖中的格仔只能橫向或者縱向連線 不能對角連線 連線在一起的陸地稱作島嶼,同時整個地圖都被海水圍繞。假設給出的地圖中只會有乙個島嶼,並且島嶼中不會有湖 即不會有水被陸地包圍的情況出現 請判斷所給定的二維地圖中...