菜鳥扣程式碼第九天:leetcode463--島嶼的周長
題目描述:
給定一個包含 0 和 1 的二維網格地圖,其中 1 表示陸地 0 表示水域。
網格中的格子水平和垂直方向相連(對角線方向不相連)。整個網格被水完全包圍,但其中恰好有一個島嶼(或者說,一個或多個表示陸地的格子相連組成的島嶼)。
島嶼中沒有“湖”(“湖” 指水域在島嶼內部且不和島嶼周圍的水相連)。格子是邊長為 1 的正方形。網格為長方形,且寬度和高度均不超過 100 。計算這個島嶼的周長。
輸入:
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]
輸出: 16
解釋: 它的周長是下面圖片中的 16 個黃色的邊:
程式碼:
class Solution:
def islandPerimeter(self, grid: List[List[int]]) -> int:
if not grid:
return 0
result = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
result += 4
if i > 0 and grid[i-1][j] == 1:
result -= 2
if j > 0 and grid[i][j-1] == 1:
result -= 2
return result
測試用例:
輸入
[[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
輸出
16
預期結果
16
相關文章
- Leedcode-島嶼的周長
- LeetCode 463. 島嶼的周長 JAVALeetCodeJava
- 程式碼隨想錄day52 || 圖論搜尋 島嶼數量,島嶼的最大面積圖論
- Facebook 面試題 | 島的周長面試題
- 最大島嶼面積
- 核心菜鳥的成長之路
- 【力扣】島嶼數量(體會一下dfs和bfs思路的實質)力扣
- 有關Developer的島嶼理論Developer
- 程式碼隨想錄演算法訓練營day51| 卡碼網99.島嶼數量 卡碼網100.島嶼的最大面積演算法
- 菜鳥成長系列-策略模式模式
- 200. 島嶼數量
- 菜鳥成長系列-觀察者模式模式
- 菜鳥成長系列-模板方法模式模式
- 菜鳥成長系列-工廠模式模式
- 菜鳥成長系列-單例模式單例模式
- [LintCode]NumberofIslands(島嶼個數)
- 一個菜鳥在程式碼重構中的感想
- 從菜鳥碼農到Java架構師——成長指南Java架構
- 菜鳥成長系列-Builder 建造者模式UI模式
- 菜鳥如何成為一個高效程式設計師的成長之路程式設計師
- 程式碼隨想錄演算法訓練營 | 200.島嶼的數量(dfs/bfs)演算法
- Linux“菜鳥”到“菜鳥的一些建議Linux
- 菜鳥扣程式碼第十五天:leetcode第1365題--有多少小於當前數字的數字LeetCode
- 程式設計師菜鳥面試攻略程式設計師面試
- 後端成長之路:從菜鳥到架構後端架構
- 菜鳥成長系列-多型、介面和抽象類多型抽象
- 我用演算法學golang(島嶼的最大面積)演算法Golang
- IT菜鳥的學習生活
- Linux菜鳥到老鳥的那些建議Linux
- 【菜鳥讀原始碼】halo✍原始碼學習 (一)原始碼
- 菜鳥理解的區塊鏈區塊鏈
- 菜鳥的架構師之路架構
- 菜鳥的讀書筆記筆記
- 鳥哥的 Linux 私房菜Linux
- 菜鳥的Node.js之旅Node.js
- java從菜鳥到碼神之路——運算子Java
- 成為高手的必經之路——學會除錯程式碼(菜鳥必讀)除錯
- 給程式設計師“菜鳥”的6條建議程式設計師