leetcode463 岛屿的周长

通过dfs,判断交界处进行加1

class Solution:
    def islandPerimeter(self, grid: List[List[int]]) -> int:
        visit=[[0]*len(grid[0]) for _ in range(len(grid))]

        def dfs(x,y,count,visit):

            if grid[x][y]==0:
                count+=1
                return count
            else:
                visit[x][y]=1
                for item in [(0,1),(1,0),(-1,0),(0,-1)]:
                    if x+item[0]>=len(grid) or x+item[0]<0:
                        count+=1
                    if y+item[1]>=len(grid[0]) or y+item[1]<0:
                        count+=1
                    if 0<=x+item[0]<len(grid) and 0<=y+item[1]<len(grid[0]) and visit[x+item[0]][y+item[1]]!=1 :

                        count=dfs(x+item[0],y+item[1],count,visit)


            return count

        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j]==1:
                    result=dfs(i,j,0,visit)
                    return result

迭代方法

class Solution:
    def islandPerimeter(self, grid: List[List[int]]) -> int:

        count=0       
        for i in range(len(grid)):
            for j in range(len(grid[0])):
                if grid[i][j]==1:
                    for item in [(0,1),(1,0),(-1,0),(0,-1)]:
                        if i+item[0]>=len(grid) or i+item[0]<0:
                            count+=1
                        if j+item[1]>=len(grid[0]) or j+item[1]<0:
                            count+=1
                        if 0<=i+item[0]<len(grid) and 0<=j+item[1]<len(grid[0]) and grid[i+item[0]][j+item[1]]==0:

                            count+=1
        return count
全部评论

相关推荐

故事和酒66:感觉够用了佬ps资格证书多了一行,最好精简成一面,hr看不了那么多字
点赞 评论 收藏
分享
在看牛客的社畜很积极:身高体重那一行信息去掉,学校那一行的信息放上面,找半天都没找到你是哪个学校什么专业的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务