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
全部评论

相关推荐

2025-12-14 11:43
黑龙江大学 Java
用微笑面对困难:确实比较烂,可以这么修改:加上大学的qs排名,然后大学简介要写一些,然后硕士大学加大加粗,科研经历第一句话都写上在复旦大学时,主要负责xxxx,简历左上角把学校logo写上,建议用复旦大学的简历模板
点赞 评论 收藏
分享
牛客57020934...:说实话小厂应该也挺喜欢你这种的,看起来能干活,学历不是那种硕博溢价很高,大厂学历卡死了,但社招和中厂可以多试试。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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