力扣热题51

200. 岛屿数量 - 力扣(LeetCode)https://leetcode.cn/problems/number-of-islands/submissions/628256822/?envType=study-plan-v2&envId=top-100-liked

深度优先递归

双层循环进行遍历,对每个1进行计数作为岛屿,然后进入递归将这个1四周的1的四周都变为0即淹没,最后得到答案

复制代码
#python
class Solution:
    def dfs(self,grid,a,b):
        grid[a][b]=0
        c,d=len(grid),len(grid[0])
        for x,y in [(a-1,b),(a+1,b),(a,b-1),(a,b+1)]:
            if 0<=x<c and 0<=y<d and grid[x][y]=="1":
                self.dfs(grid,x,y)
    def numIslands(self, grid: List[List[str]]) -> int:
        a=len(grid)
        if a==0:
            return 0
        b=len(grid[0])
        ans=0
        for i in range(a):
            for j in range(b):
                if grid[i][j]=="1":
                    ans=ans+1
                    self.dfs(grid,i,j)
        return ans
相关推荐
py有趣7 分钟前
力扣热门100题之岛屿的数量(DFS/BFS经典题)
leetcode·深度优先·宽度优先
王夏奇9 分钟前
python中的__all__ 具体用法
java·前端·python
王夏奇13 分钟前
pycharm中3种不同类型的python文件
ide·python·pycharm
SpiderPex21 分钟前
第十七届蓝桥杯 C++ B组-题目 (最新出炉 )
c++·职场和发展·蓝桥杯
无小道28 分钟前
算法——暴力+优化
算法·优化·暴力
Free Tester32 分钟前
如何判断 LeakCanary 报告的严重程度
java·jvm·算法
炘爚35 分钟前
C++ 右值引用与程序优化
开发语言·c++
小陈的进阶之路1 小时前
Selenium 滑动 vs Appium 滑动
python·selenium·测试工具·appium
Mike_6661 小时前
txt_json和xml_json
xml·python·json
si莉亚1 小时前
ROS2安装EVO工具包
linux·开发语言·c++·开源