zoukankan      html  css  js  c++  java
  • 边工作边刷题:70天一遍leetcode: day 38

    number of islands

    错误点

    • 没检查grid element是否为1,光想着边界检测和visited check了,总共是3个条件
    • visited check时机?最好是在dfs外面,在dfs里面设为true
    • 小错误:grid的值是字符
    class Solution(object):
        def numIslands(self, grid):
            """
            :type grid: List[List[str]]
            :rtype: int
            """
            def dfs(grid, visited, x, y):
                m = len(grid)
                n = len(grid[0])
                visited[x*n+y]=True
                dir = [[1,0],[0,1],[-1,0],[0,-1]]
                for d in dir:
                    x1=x+d[0]
                    y1=y+d[1]
                    if x1<m and x1>=0 and y1<n and y1>=0 and 
                       not visited[x1*n+y1] and grid[x1][y1]=='1':
                       dfs(grid, visited, x1, y1)
            
            if not grid: return 0
            m = len(grid)
            n = len(grid[0])
            count = 0
            visited = [False]*(m*n)
            for x in range(m):
                for y in range(n):
                    if not visited[x*n+y] and grid[x][y]=='1':
                        count+=1
                        dfs(grid, visited, x, y)
            
            return count
    
  • 相关阅读:
    【代码笔记】JTable 、TableModel的使用3
    学习JSP(二)
    Tomcat文件配置
    学习JSP(一)
    配置elipse
    配置Jdk
    定义新运算练习题
    学习JAVA所需的东西
    学习秘籍
    总有那么一个人
  • 原文地址:https://www.cnblogs.com/absolute/p/5678259.html
Copyright © 2011-2022 走看看