博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode 1020. Number of Enclaves
阅读量:4635 次
发布时间:2019-06-09

本文共 2413 字,大约阅读时间需要 8 分钟。

dfs或者bfs

class Solution:    def dfs(self, A, rows, cols, i, j):        if not (0 <= i < rows and 0 <= j < cols):            return        elif A[i][j] == 0:            return        else:            A[i][j] = 0            self.dfs(A, rows, cols, i + 1, j)            self.dfs(A, rows, cols, i - 1, j)            self.dfs(A, rows, cols, i, j + 1)            self.dfs(A, rows, cols, i, j - 1)    def numEnclaves(self, A: List[List[int]]) -> int:        rows = len(A)        cols = len(A[0])        for j in range(0, cols):            if A[0][j] == 1:                self.dfs(A, rows, cols, 0, j)            if A[rows - 1][j] == 1:                self.dfs(A, rows, cols, rows - 1, j)        for i in range(0, rows):            if A[i][0] == 1:                self.dfs(A, rows, cols, i, 0)            if A[i][cols - 1] == 1:                self.dfs(A, rows, cols, i, cols - 1)        ans = 0        for row in A:            for a in row:                if a == 1:                    ans += 1        return ans

或者

import queueclass Solution:    def bfs(self, A, rows, cols, i, j):        q = queue.Queue()        A[i][j] = 0        q.put((i, j))        while not q.empty():            p = q.get()            if 0 <= p[0] + 1 < rows and A[p[0] + 1][p[1]] == 1:                A[p[0] + 1][p[1]] = 0                q.put((p[0] + 1, p[1]))            if 0 <= p[0] - 1 < rows and A[p[0] - 1][p[1]] == 1:                A[p[0] - 1][p[1]] = 0                q.put((p[0] - 1, p[1]))            if 0 <= p[1] + 1 < cols and A[p[0]][p[1] + 1] == 1:                A[p[0]][p[1] + 1] = 0                q.put((p[0], p[1] + 1))            if 0 <= p[1] - 1 < cols and A[p[0]][p[1] - 1] == 1:                A[p[0]][p[1] - 1] = 0                q.put((p[0], p[1] - 1))    def numEnclaves(self, A: List[List[int]]) -> int:        rows = len(A)        cols = len(A[0])        for j in range(0, cols):            if A[0][j] == 1:                self.bfs(A, rows, cols, 0, j)            if A[rows - 1][j] == 1:                self.bfs(A, rows, cols, rows - 1, j)        for i in range(0, rows):            if A[i][0] == 1:                self.bfs(A, rows, cols, i, 0)            if A[i][cols - 1] == 1:                self.bfs(A, rows, cols, i, cols - 1)        ans = 0        for row in A:            for a in row:                if a == 1:                    ans += 1        return ans

 

转载于:https://www.cnblogs.com/zywscq/p/10739680.html

你可能感兴趣的文章
子分类账知识学习(汇总网上比较有用的资料)
查看>>
pyQt 每日一练习 -- 登录框
查看>>
wp 删除独立存储空间文件(多级非空文件夹删除)
查看>>
Loadrunner安装使用入门
查看>>
smartupload 上传文件时 把页面编码改成gbk 解决乱码
查看>>
EPS是什么格式
查看>>
input禁止显示历史输入记录
查看>>
两下或多下回车造成数据库多次提交事物的解决方法
查看>>
Python的数据库操作(Sqlalchemy)
查看>>
2.抽取代码(BaseActivity)
查看>>
My simplified pickit2 clone
查看>>
jQuery-1.9.1源码分析系列(四) 缓存系统
查看>>
(转)面试必备技能:JDK动态代理给Spring事务埋下的坑!
查看>>
C语言 · 勾股数
查看>>
菜鸟初涉SQL Server的总结
查看>>
过犹不及
查看>>
Redis 入门知识
查看>>
夏天过去了, 姥爷推荐几套来自smashingmagzine的超棒秋天主题壁纸
查看>>
转--Android如何在java代码中设置margin
查看>>
反射的所有api
查看>>