python-leetcode-200-岛屿的个数

博客给出题目“岛屿的个数”,难度为中等。题目是给定由陆地和水组成的二维网格,计算岛屿数量,岛被水包围且由水平或垂直相邻陆地连接而成,还提到可考虑用DFS做法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

**题号: **200
**题目: **岛屿的个数
**难度: **中等
**内容: **给定一个由 '1'(陆地)和
'0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。

示例 1:

输入:
11110
11010
11000
00000

输出:  1

示例 2:

输入:
11000
11000
00100
00011

输出: 3

代码如下:

class Solution:
    def numIslands(self, grid):
        """
        :type grid: List[List[str]]
        :rtype: int
        """
        if len(grid) == 0:
            return 0
        x = len(grid[0])-1
        y = len(grid) -1


        maxl = 0 #岛屿个数

        for i in range(0,y+1):
            for p in range(0,x+1):
                now = grid[i][p]
                if now == "1":
                    maxl = maxl + 1
                    l = []
                    l.append([i,p])

                    while len(l) != 0:


                        nowi,nowp = l.pop()


                        grid[nowi][nowp] = maxl

                        #上
                        if nowi != 0:
                            if grid[nowi-1][nowp] == "1":
                                l.append([nowi-1,nowp])

                        #下
                        if nowi != y:
                            if grid[nowi+1][nowp] == "1":
                                l.append([nowi+1,nowp])
                        #左
                        if nowp != 0:
                            if grid[nowi][nowp-1] == "1":
                                l.append([nowi,nowp-1])

                        #右
                        if nowp != x:
                            if grid[nowi][nowp+1] == "1":
                                l.append([nowi,nowp+1])
        return maxl

当然大家可以考虑用DFS做法!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值