Python LeetCode-695.島嶼的最大面積(難度-中等)(python)

題目

給定一個包含了一些 0 和 1的非空二維數(shù)組 grid , 一個 島嶼 是由四個方向 (水平或垂直) 的 1 (代表土地) 構(gòu)成的組合贾费。你可以假設(shè)二維矩陣的四個邊緣都被水包圍著。

找到給定的二維數(shù)組中最大的島嶼面積彰触。(如果沒有島嶼,則返回面積為0命辖。)

示例一
[[0,0,1,0,0,0,0,1,0,0,0,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,1,1,0,1,0,0,0,0,0,0,0,0],
[0,1,0,0,1,1,0,0,1,0,1,0,0],
[0,1,0,0,1,1,0,0,1,1,1,0,0],
[0,0,0,0,0,0,0,0,0,0,1,0,0],
[0,0,0,0,0,0,0,1,1,1,0,0,0],
[0,0,0,0,0,0,0,1,1,0,0,0,0]]
對于上面這個給定矩陣應(yīng)返回 6况毅。注意答案不應(yīng)該是11,因為島嶼只能包含水平或垂直的四個方向的‘1’尔艇。

示例二
[[0,0,0,0,0,0,0,0]]
對于上面這個給定的矩陣, 返回 0尔许。

注意: 給定的矩陣grid 的長度和寬度都不超過 50。

分析與解答

這道題目和前面做過的python-數(shù)據(jù)結(jié)構(gòu) 島嶼的個數(shù) 深度優(yōu)先 廣度優(yōu)先 兩種解答是一個一模一樣的題目终娃,主要是可以使用隊列來進行一個廣度優(yōu)先查詢味廊。

class Solution:

    def maxAreaOfIsland(self, grid) -> int:
        if not grid:
            return 0

        if isinstance(grid[0], bool) or isinstance(grid[0], int):
            return 1 if grid[0] else 0
        ilsand_list = [0]  # 排除當(dāng)沒有島嶼的時候,執(zhí)行max函數(shù)出錯
        m, n = len(grid), len(grid[0])  # m代表行棠耕, n代表列
        for i in range(m):
            for j in range(n):
                if grid[i][j] == 1:
                    grid[i][j] = "0"
                    size_of_island, grid = self.get_size_of_island(i, j, grid)  # 利用隊列(廣度優(yōu)先查詢)余佛,將島嶼所在位置全部求出并且獲得島嶼大小
                    ilsand_list.append(size_of_island)

        return max(ilsand_list)

    def get_size_of_island(self, i, j, grid):
        size_of_island = 1  # 能走到這邊說明這個島嶼的最小初始面積為1
        m, n = len(grid), len(grid[0])  # m代表行, n代表列
        use_list = [[i, j], ]
        while len(use_list):
            i, j = use_list.pop(0)
            if i > 0:
                if grid[i - 1][j] == 1:
                    grid[i - 1][j] = "0"
                    use_list.append([i - 1, j])
                    size_of_island += 1

            if i < m - 1:
                if grid[i + 1][j] == 1:
                    grid[i + 1][j] = "0"
                    use_list.append([i + 1, j])
                    size_of_island += 1

            if j > 0:
                if grid[i][j - 1] == 1:
                    grid[i][j - 1] = "0"
                    use_list.append([i, j - 1])
                    size_of_island += 1

            if j < n - 1:
                if grid[i][j + 1] == 1:
                    grid[i][j + 1] = "0"
                    use_list.append([i, j + 1])
                    size_of_island += 1

        return size_of_island, grid


if __name__ == '__main__':
    s = Solution()
    g0 = []
    # g1 = [["0"]]
    # g2 = [["1", "1", "0", "0", "0"],
    #       ["1", "1", "0", "0", "0"],
    #       ["0", "0", "1", "0", "0"],
    #       ["0", "0", "0", "1", "1"]]
    # for g in [g0, g1, g2]:
    #     print(s.numIslands(g))
    a = [[1, 1, 0, 0, 0],
         [1, 1, 0, 0, 0],
         [0, 0, 0, 1, 1],
         [0, 0, 0, 1, 1]]
    print(s.maxAreaOfIsland(a))



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窍荧,一起剝皮案震驚了整個濱河市辉巡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蕊退,老刑警劉巖郊楣,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異咕痛,居然都是意外死亡痢甘,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門茉贡,熙熙樓的掌柜王于貴愁眉苦臉地迎上來塞栅,“玉大人,你說我怎么就攤上這事腔丧》乓” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵愉粤,是天一觀的道長砾医。 經(jīng)常有香客問我,道長衣厘,這世上最難降的妖魔是什么如蚜? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任压恒,我火速辦了婚禮,結(jié)果婚禮上错邦,老公的妹妹穿的比我還像新娘探赫。我一直安慰自己,他們只是感情好撬呢,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布伦吠。 她就那樣靜靜地躺著,像睡著了一般魂拦。 火紅的嫁衣襯著肌膚如雪毛仪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天芯勘,我揣著相機與錄音箱靴,去河邊找鬼。 笑死借尿,一個胖子當(dāng)著我的面吹牛刨晴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播路翻,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼狈癞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了茂契?” 一聲冷哼從身側(cè)響起蝶桶,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掉冶,沒想到半個月后真竖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡厌小,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年恢共,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片璧亚。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡讨韭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出癣蟋,到底是詐尸還是另有隱情透硝,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布疯搅,位于F島的核電站濒生,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幔欧。R本人自食惡果不足惜罪治,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一丽声、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧规阀,春花似錦恒序、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滋饲。三九已至厉碟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屠缭,已是汗流浹背箍鼓。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呵曹,地道東北人款咖。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像奄喂,于是被迫代替她去往敵國和親铐殃。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348