Go語言題解LeetCode463島嶼的周長示例詳解
題目描述
原題鏈接 :
給定一個(gè) row x col
的二維網(wǎng)格地圖 grid
,其中:grid[i][j] = 1
表示陸地, grid[i][j] = 0
表示水域。
網(wǎng)格中的格子 水平和垂直 方向相連(對角線方向不相連)。整個(gè)網(wǎng)格被水完全包圍,但其中恰好有一個(gè)島嶼(或者說,一個(gè)或多個(gè)表示陸地的格子相連組成的島嶼)。
島嶼中沒有“湖”(“湖” 指水域在島嶼內(nèi)部且不和島嶼周圍的水相連)。格子是邊長為 1 的正方形。網(wǎng)格為長方形,且寬度和高度均不超過 100 。計(jì)算這個(gè)島嶼的周長。
示例 1:
輸入:grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]] 輸出:16 解釋:它的周長是上面圖片中的 16 個(gè)黃色的邊
示例 2:
輸入:grid = [[1]] 輸出:4
示例 3:
輸入:grid = [[1,0]] 輸出:4
提示:
row == grid.length
col == grid[i].length
1 <= row, col <= 100
grid[i][j] 為 0 或 1
思路分析
本題中,我們可以針對每一個(gè)值為1的單元格,它的上下左右每有一個(gè)值為0的單元格則島嶼的周長加一。
我們可以簡化計(jì)算,即針對每一個(gè)值為1的單元格,算出5分別減去每一個(gè)值為1的單元格和其上下左右單元格的值(因?yàn)槿绻搯卧駷閮?nèi)陸,則其和其上下左右單元格的值的和為5)。
該題的難度在于邊界的判定,我們?yōu)榍筮吔缗卸ê喕梢栽诙S數(shù)組grid數(shù)組周圍加上一圈值為0的圍墻,然后從[1,1]找到[hight+1][weight+1]。
AC 代碼
public class Solution { public int IslandPerimeter(int[][] grid) { int w = grid[0].Length; int h = grid.Length; int c = 0; int[][] g = new int[h + 2][]; for (int i = 0; i < h + 2; i++) { g[i] = new int[w+2]; for (int j = 0; j <w + 2; j++) { if (i == 0 || j == 0 || i == h + 1 || j == w + 1) g[i][j] = 0; else g[i][j] = grid[i - 1][j - 1]; } } for (int i = 1; i < h + 1; i++) { for (int j = 1; j <w + 1; j++) { if (g[i][j] == 1) c += 5 - g[i][j] - g[i - 1][j] - g[i + 1][j] - g[i][j - 1] - g[i][j + 1]; } } return c; } }
以上就是Go語言題解LeetCode463島嶼的周長示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go題解島嶼周長示例的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Golang http包構(gòu)建RESTful API的實(shí)現(xiàn)
在Go語言中實(shí)現(xiàn)RESTful API可以利用標(biāo)準(zhǔn)庫net/http提供的功能,它允許你輕松地創(chuàng)建和處理HTTP請求,本文主要介紹了Golang http包構(gòu)建RESTful API的實(shí)現(xiàn),感興趣的可以了解一下2024-01-01基于Go語言實(shí)現(xiàn)應(yīng)用IP防火墻
在公司里面經(jīng)常會(huì)聽到某應(yīng)用有安全漏洞問題,沒有做安全加固,IP防火墻就是一個(gè)典型的安全加固解決方案,下面我們就來學(xué)習(xí)一下如何使用go語言實(shí)現(xiàn)IP防火墻吧2023-11-11golang基于Mutex實(shí)現(xiàn)可重入鎖
鎖可重入也就是當(dāng)前已經(jīng)獲取到鎖的goroutine繼續(xù)調(diào)用Lock方法獲取鎖,Go標(biāo)準(zhǔn)庫中提供了sync.Mutex實(shí)現(xiàn)了排他鎖,但并不是可重入的,所以本文給大家介紹了golang基于Mutex實(shí)現(xiàn)可重入鎖,文中有詳細(xì)的代碼示例,需要的朋友可以參考下2024-03-03golang利用函數(shù)閉包實(shí)現(xiàn)簡單的中間件
中間件設(shè)計(jì)模式是一種常見的軟件設(shè)計(jì)模式,它在許多編程語言和框架中被廣泛應(yīng)用,這篇文章主要為大家介紹一下golang利用函數(shù)閉包實(shí)現(xiàn)一個(gè)簡單的中間件,感興趣的可以了解下2023-10-10深入了解Go的HttpClient超時(shí)機(jī)制
在寫?Go?的過程中經(jīng)常對比這Java和GO語言的特性,踩了不少坑,也發(fā)現(xiàn)了不少有意思的地方,今天就來聊聊?Go?自帶的?HttpClient?的超時(shí)機(jī)制2022-11-11gin解析json格式的數(shù)據(jù)出錯(cuò)的處理方案
這篇文章主要介紹了gin解析json格式的數(shù)據(jù)出錯(cuò)的處理方案,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03Golang實(shí)現(xiàn)四層負(fù)載均衡的示例代碼
做開發(fā)的同學(xué)應(yīng)該經(jīng)常聽到過負(fù)載均衡的概念,今天我們就來實(shí)現(xiàn)一個(gè)乞丐版的四層負(fù)載均衡,并用它對mysql進(jìn)行負(fù)載均衡測試,感興趣的可以了解一下2023-07-07